docs(palace): mark Phase N1 complete in roadmap
This commit is contained in:
parent
632b5df1ac
commit
d9d0cffc8d
@ -359,22 +359,22 @@ import type { BasePalaceMemoryDoc } from '@bytelyst/palace';
|
||||
|
||||
All methods require `userId` + `productId` as first two params:
|
||||
|
||||
- [ ] `ensureWing(userId, productId, workspaceId, name)` — upsert wing from workspace
|
||||
- [ ] `getWing(userId, productId, wingId)` → `PalaceWingDoc | null`
|
||||
- [ ] `listWings(userId, productId)` → `PalaceWingDoc[]`
|
||||
- [ ] `deleteWing(userId, productId, wingId)` — cascade delete rooms, memories, tunnels, KG
|
||||
- [ ] `ensureRoom(userId, productId, wingId, name, description?)` — upsert room
|
||||
- [ ] `listRooms(userId, productId, wingId)` → `PalaceRoomDoc[]`
|
||||
- [ ] `storeMemory(userId, productId, wingId, roomId, hall, content, sourceNoteId?, embedding?)` — create + dedup
|
||||
- [ ] `searchSemantic(userId, productId, query, embedding, wingId?, limit)` → ranked memories
|
||||
- [ ] `searchText(userId, productId, query, wingId?, limit)` → text-matched memories
|
||||
- [ ] `searchHybrid(userId, productId, query, embedding, wingId?, limit)` → text candidates re-ranked by cosine
|
||||
- [ ] `getWingSummary(userId, productId, wingId)` → rooms + memory counts
|
||||
- [ ] `isNearDuplicate(userId, productId, roomId, hall, content, embedding, threshold)` → boolean
|
||||
- [ ] `pruneOldMemories(userId, productId, wingId, olderThanDays, minRelevance)` → count deleted
|
||||
- [ ] `decayRelevance(userId, productId, halfLifeDays)` → count updated
|
||||
- [ ] `backfillEmbeddings(userId, productId)` → count embedded
|
||||
- [ ] `healthCheck()` → `{ cosmos: boolean, llm: boolean }`
|
||||
- [x] 44d8867 `ensureWing(userId, productId, workspaceId, name)` — upsert wing from workspace
|
||||
- [x] 44d8867 `getWing(userId, productId, wingId)` → `PalaceWingDoc | null`
|
||||
- [x] 44d8867 `listWings(userId, productId)` → `PalaceWingDoc[]`
|
||||
- [x] 44d8867 `deleteWing(userId, productId, wingId)` — cascade delete rooms, memories, tunnels, KG
|
||||
- [x] 44d8867 `ensureRoom(userId, productId, wingId, name, description?)` — upsert room
|
||||
- [x] 44d8867 `listRooms(userId, productId, wingId)` → `PalaceRoomDoc[]`
|
||||
- [x] 44d8867 `storeMemory(userId, productId, wingId, roomId, hall, content, sourceNoteId?, embedding?)` — create + dedup
|
||||
- [x] 44d8867 `searchSemantic(userId, productId, query, embedding, wingId?, limit)` → ranked memories
|
||||
- [x] 44d8867 `searchText(userId, productId, query, wingId?, limit)` → text-matched memories
|
||||
- [x] 44d8867 `searchHybrid(userId, productId, query, embedding, wingId?, limit)` → text candidates re-ranked by cosine
|
||||
- [x] 44d8867 `getWingSummary(userId, productId, wingId)` → rooms + memory counts
|
||||
- [x] 44d8867 `isNearDuplicate(userId, productId, roomId, hall, content, embedding, threshold)` → boolean
|
||||
- [x] 44d8867 `pruneOldMemories(userId, productId, wingId, olderThanDays, minRelevance)` → count deleted
|
||||
- [x] 44d8867 `decayRelevance(userId, productId, halfLifeDays)` → count updated
|
||||
- [x] 44d8867 `backfillEmbeddings(userId, productId)` → count embedded
|
||||
- [x] 44d8867 `healthCheck()` → `{ cosmos: boolean, llm: boolean }`
|
||||
|
||||
**User isolation enforcement:**
|
||||
```typescript
|
||||
@ -504,19 +504,19 @@ async function encryptMemoryContent(doc: PalaceMemoryDoc): Promise<PalaceMemoryD
|
||||
|
||||
### N1.7 Tests
|
||||
|
||||
- [ ] Wing CRUD with user isolation (user A can't see user B's wings)
|
||||
- [ ] Room CRUD scoped to wing + user
|
||||
- [ ] Memory store with deduplication
|
||||
- [ ] Semantic search returns relevant results ranked by cosine similarity
|
||||
- [ ] Text search returns text-matched results
|
||||
- [ ] Hybrid search combines text + semantic
|
||||
- [ ] Near-duplicate detection (exact + cosine)
|
||||
- [ ] Field encryption round-trip for memory content
|
||||
- [ ] Prune removes old low-relevance memories only for the requesting user
|
||||
- [ ] Relevance decay applies exponential reduction
|
||||
- [ ] Wing deletion cascades to rooms, memories, tunnels, KG
|
||||
- [ ] Cross-user isolation: user A's search never returns user B's memories
|
||||
- [ ] productId scoping: wrong productId returns empty results
|
||||
- [x] 632b5df Wing CRUD with user isolation (user A can't see user B's wings)
|
||||
- [x] 632b5df Room CRUD scoped to wing + user
|
||||
- [x] 632b5df Memory store with deduplication
|
||||
- [x] 632b5df Semantic search returns relevant results ranked by cosine similarity
|
||||
- [x] 632b5df Text search returns text-matched results
|
||||
- [x] 632b5df Hybrid search combines text + semantic
|
||||
- [x] 632b5df Near-duplicate detection (exact + cosine)
|
||||
- [x] 632b5df Field encryption round-trip for memory content
|
||||
- [x] 632b5df Prune removes old low-relevance memories only for the requesting user
|
||||
- [x] 632b5df Relevance decay applies exponential reduction
|
||||
- [x] 632b5df Wing deletion cascades to rooms, memories, tunnels, KG
|
||||
- [x] 632b5df Cross-user isolation: user A's search never returns user B's memories
|
||||
- [x] 632b5df productId scoping: wrong productId returns empty results
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user