Skip to content

Commit 7d420b5

Browse files
committed
beads: close mr-vk9v (Phase 6.2 completed)
1 parent 9ad9eb1 commit 7d420b5

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

.beads/issues.jsonl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{"id":"mr-0n8n","title":"5.3 — Team + Mesh + Audit","description":"# 5.3 — Team + Mesh + Audit\n\n## Files (ALL NEW)\n- `crates/core/src/coordination/team.rs`\n- `crates/core/src/coordination/mesh.rs`\n- `crates/core/src/audit.rs`\n\n## Team (1:1 from agentmemory team.ts)\n- share(team_id, item): store TeamSharedItem. Types: memory, pattern, observation\n- profile(team_id): aggregate top concepts/files/patterns across shared items\n- Mode: Shared or Private\n\n## Mesh (1:1 from agentmemory mesh.ts)\nP2P sync via HTTP. LWW merge: compare timestamps, keep newer.\nShared scopes: memories, actions, semantic, procedural, relations, graph nodes/edges.\nSecurity: block private IPs (127.x, 10.x, 192.168.x, 172.16-31.x, etc.)\nAuth: Bearer token. Timeout: 30s.\n\n## Audit (1:1 from agentmemory audit.ts)\nRecord all mutations as AuditEntry: operation type (~60 types), target IDs, details, quality score.\nUsed by governance and diagnostics.\n\n## Tests\n- Team: share + profile aggregation\n- Mesh: LWW keeps newer, blocks private IPs\n- Audit: mutations produce entries","status":"open","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:38:10.389836156Z","created_by":"quangdang","updated_at":"2026-05-28T23:40:09.479716779Z","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-0n8n","depends_on_id":"mr-0zgl","type":"blocks","created_at":"2026-05-28T23:40:09.478879479Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
1+
{"id":"mr-0n8n","title":"5.3 — Team + Mesh + Audit","description":"# 5.3 — Team + Mesh + Audit\n\n## Files (ALL NEW)\n- `crates/core/src/coordination/team.rs`\n- `crates/core/src/coordination/mesh.rs`\n- `crates/core/src/audit.rs`\n\n## Team (1:1 from agentmemory team.ts)\n- share(team_id, item): store TeamSharedItem. Types: memory, pattern, observation\n- profile(team_id): aggregate top concepts/files/patterns across shared items\n- Mode: Shared or Private\n\n## Mesh (1:1 from agentmemory mesh.ts)\nP2P sync via HTTP. LWW merge: compare timestamps, keep newer.\nShared scopes: memories, actions, semantic, procedural, relations, graph nodes/edges.\nSecurity: block private IPs (127.x, 10.x, 192.168.x, 172.16-31.x, etc.)\nAuth: Bearer token. Timeout: 30s.\n\n## Audit (1:1 from agentmemory audit.ts)\nRecord all mutations as AuditEntry: operation type (~60 types), target IDs, details, quality score.\nUsed by governance and diagnostics.\n\n## Tests\n- Team: share + profile aggregation\n- Mesh: LWW keeps newer, blocks private IPs\n- Audit: mutations produce entries","status":"closed","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:38:10.389836156Z","created_by":"quangdang","updated_at":"2026-05-29T07:07:54.108760633Z","closed_at":"2026-05-29T07:07:54.100344032Z","close_reason":"Phase 5.3 complete: Team (8 tests), Mesh (15 tests), Audit (8 tests) - 31 tests total, 1:1 with agentmemory","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-0n8n","depends_on_id":"mr-0zgl","type":"blocks","created_at":"2026-05-28T23:40:09.478879479Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
22
{"id":"mr-0zgl","title":"5.1 — Actions + Frontier + Leases","description":"# 5.1 — Actions + Frontier + Leases\n\n## Files (ALL NEW)\n- `crates/core/src/coordination/mod.rs`\n- `crates/core/src/coordination/actions.rs`\n- `crates/core/src/coordination/frontier.rs`\n- `crates/core/src/coordination/leases.rs`\n\n## Actions (1:1 from agentmemory actions.ts)\nCRUD for Action + ActionEdge. SQLite tables: actions, action_edges.\nEdge types: Requires, Unlocks, SpawnedBy, GatedBy, ConflictsWith\n- If action has requires edge: initial status = Blocked\n- propagate_completion: when dep done, check if ALL deps done -> unblock\n\n## Frontier (1:1 from agentmemory frontier.ts)\nScore = priority*10 + min(age_hours*0.5, 20) + unlock_count*5 + spawned_by_bonus(3) + active_bonus(15)\nSkip: done/cancelled/blocked/leased-by-others. Sort desc.\n\n## Leases (1:1 from agentmemory leases.ts)\nConstants: DEFAULT_TTL=10min, MAX_TTL=60min\n- acquire(action_id, agent_id, ttl): validate, check conflicts, create, set Active\n- release(lease_id, result?): Done if result, else Pending\n- renew(lease_id, extend): max(now, current) + extend\n- cleanup(): expire past-due, reset orphans\n\n## Tests\n- Actions CRUD + dependency propagation\n- Frontier scoring matches expected\n- Leases acquire/release/renew lifecycle\n- Conflict detection (two agents same action)","status":"closed","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:38:09.465904119Z","created_by":"quangdang","updated_at":"2026-05-29T06:13:39.607186368Z","closed_at":"2026-05-29T06:13:39.607108568Z","close_reason":"Phase 5.1 complete: 3 coordination modules (actions, frontier, leases) with 20 tests, SQLite-backed, dependency propagation, TTL management","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-0zgl","depends_on_id":"mr-vctn","type":"blocks","created_at":"2026-05-28T23:40:08.741371251Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
33
{"id":"mr-11r","title":"Sync remaining upstream 94f1689 gaps (LLM init, graph cache, hook/doc parity)","status":"closed","priority":1,"issue_type":"task","created_at":"2026-04-27T14:58:42.576565532Z","created_by":"quangdang","updated_at":"2026-05-27T00:39:15.732100900Z","closed_at":"2026-05-27T00:39:15.731953300Z","close_reason":"Completed: LLM init wiring (use_llm, llm_provider, llm_model, llm_endpoint, llm_api_key, accept_external_llm) in onboarding.rs with collect_corpus_for_refinement, CLI params unprefixed and passed through, graph cache invalidation on KG writes in mcp_server.rs","source_repo":".","compaction_level":0,"original_size":0}
44
{"id":"mr-12b","title":"feat: XDG base directory support for config (Issue #46)","description":"## Feature: XDG base directory support\n\n### Source: Issue #46 (milla-jovovich/mempalace)\n\n### What it does\nSupport XDG Base Directory Specification for config location. Currently hardcoded to ~/.mempalace. Should respect XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_STATE_HOME.\n\n### Rust implementation\nUse dirs crate which already supports XDG:\n- Config: dirs::config_dir() / mempalace (XDG_CONFIG_HOME)\n- Data: dirs::data_dir() / mempalace (XDG_DATA_HOME) for palace storage\n- Fallback: ~/.mempalace for backward compatibility\n- Migration path: detect old ~/.mempalace and offer to migrate\n\n### Acceptance criteria\n- Respects XDG_CONFIG_HOME on Linux\n- Uses ~/Library/Application Support on macOS\n- Uses AppData on Windows\n- Backward compatible with ~/.mempalace\n- Migration from old path works\n\n### Test obligations\n- Unit test: path resolution per platform\n- Unit test: XDG env var override\n- Unit test: fallback to ~/.mempalace","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-04-07T12:58:13.143467512Z","created_by":"quangdang","updated_at":"2026-04-07T19:35:33.747113699Z","closed_at":"2026-04-07T19:35:33.746904287Z","close_reason":"Completed XDG base directory support with env var overrides, platform fallbacks, backward compatibility, migration path, and unit tests","source_repo":".","compaction_level":0,"original_size":0,"labels":["backend"],"dependencies":[{"issue_id":"mr-12b","depends_on_id":"mr-2vm","type":"blocks","created_at":"2026-04-07T12:59:45.552903409Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
@@ -287,7 +287,7 @@
287287
{"id":"mr-validate-embedding-manifest-gz26","title":"Validate manifest at Palace::open; fail with actionable error on mismatch","status":"closed","priority":0,"issue_type":"task","created_at":"2026-05-26T05:02:15.172038517Z","created_by":"quangdang","updated_at":"2026-05-26T14:24:12.109509315Z","closed_at":"2026-05-26T14:24:12.109255215Z","close_reason":"Implemented: EmbeddingManifest::read/write/validate_against in embed/manifest.rs, wired into PalaceBuilder::open()","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"labels":["phase-1"]}
288288
{"id":"mr-vcqb","title":"Phase 8: MCP Server Expansion & CLI","description":"# Phase 8: MCP Server Expansion & CLI\n\n## Context\nAgentMemory exposes 51 MCP tools. We currently have 19. This phase adds 32 new tools and 16 new CLI subcommands to expose all implemented features.\n\n## Reference\n- agentmemory: `src/mcp/tools-registry.ts` — 51 tool definitions\n- agentmemory: `src/cli.ts` — full CLI\n- Existing: `crates/core/src/mcp_server.rs` (19 tools), `crates/core/src/cli.rs` (15 commands)\n\n## Scope\n1. 32 new MCP tools across all feature groups\n2. 16 new CLI subcommands\n3. Cross-cutting: config fields, feature flags, error types, SQLite tables","status":"open","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:39:27.223093480Z","created_by":"quangdang","updated_at":"2026-05-28T23:40:15.720020105Z","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-vcqb","depends_on_id":"mr-8o9u","type":"blocks","created_at":"2026-05-28T23:40:15.330098994Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vcqb","depends_on_id":"mr-dwdq","type":"blocks","created_at":"2026-05-28T23:40:15.188391790Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vcqb","depends_on_id":"mr-gu63","type":"blocks","created_at":"2026-05-28T23:40:15.058771187Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vcqb","depends_on_id":"mr-n2bu","type":"blocks","created_at":"2026-05-28T23:40:15.605865902Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vcqb","depends_on_id":"mr-srjp","type":"blocks","created_at":"2026-05-28T23:40:15.471105398Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vcqb","depends_on_id":"mr-z1j0","type":"blocks","created_at":"2026-05-28T23:40:15.719364705Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
289289
{"id":"mr-vctn","title":"Phase 0: Foundation — AgentMemory Types & LLM Provider Abstraction","description":"# Phase 0: Foundation — New Types & LLM Provider Abstraction\n\n## Context & Motivation\nWe are implementing 1:1 feature parity with rohitg00/agentmemory (TypeScript). This phase creates the foundational types and abstractions that ALL subsequent phases depend on. Without these types, nothing else can be built.\n\n## Reference\n- agentmemory source: `src/types.ts`, `src/providers/`, `src/state/schema.ts`\n- Plan: `docs/AGENTMEMORY_PARITY_PLAN.md` Phase 0\n\n## Scope\n1. **types.rs** — ALL AgentMemory-equivalent enums and structs in Rust with Serde\n2. **llm/** module — LlmProvider trait, circuit breaker, fallback chain, OpenAI/Anthropic/Noop providers\n3. **Palace struct extension** — add `Option<Arc<dyn LlmProvider>>` and `Arc<SessionStore>`\n4. **session.rs** — SQLite-backed session tracking (CRUD for Session records)\n\n## Key Types to Implement\n### Enums\nObservationType(15), HookType(12), MemoryType(6), ConsolidationTier(4), GraphNodeType(13), GraphEdgeType(16), ActionEdgeType(5), ActionStatus(5), SignalType(5), CheckpointType(5), CheckpointStatus(4), SentinelType(6), CircuitState(3), AgentScopeMode(2), TeamMode(2)\n\n### Core Structs\nSession, RawObservation, CompressedObservation, Memory, SemanticMemory, ProceduralMemory, MemoryRelation, RetentionScore, DecayConfig, ContextBlock\n\n### Multi-Agent Structs\nAction, ActionEdge, Lease, Checkpoint, Signal, Routine, RoutineStep, RoutineRun, Sketch, Crystal, Lesson, Insight, Facet, Sentinel, MemorySlot, ProjectProfile, MeshPeer, AuditEntry, ExportData\n\n## LLM Provider Architecture\n- Trait: `complete(system, user) -> Result<String>`, `describe_image(base64, mime, prompt) -> Result<String>`\n- Circuit breaker: Closed->Open (>=3 failures in 60s)->HalfOpen (after 30s)->Closed\n- Fallback chain: try providers in order, circuit breaker wraps each\n- OpenAI compat: `/v1/chat/completions` (works with OpenAI, Ollama, etc.)\n- Anthropic: Messages API\n- Noop: returns empty string when no keys\n\n## Files\n- NEW: `crates/core/src/types.rs`\n- NEW: `crates/core/src/llm/mod.rs`, `provider.rs`, `circuit_breaker.rs`, `fallback_chain.rs`, `openai_compat.rs`, `anthropic_provider.rs`, `noop_provider.rs`\n- NEW: `crates/core/src/session.rs`\n- MODIFY: `crates/core/src/palace.rs` (extend Palace struct)\n- MODIFY: `crates/core/src/palace/builder.rs` (accept LLM provider)\n\n## Tests\n- All types serialize/deserialize round-trip (serde_json)\n- LlmProvider mock returns canned response\n- Circuit breaker state transitions (closed->open->halfopen->closed)\n- Fallback chain: first provider fails, second succeeds\n- Noop returns empty\n- PalaceBuilder accepts optional LLM provider\n- Session CRUD operations\n\n## Success Criteria\n- `cargo check` passes with all new types\n- All enums implement Display, FromStr, Serialize, Deserialize\n- LLM provider trait is object-safe\n- Circuit breaker transitions match agentmemory exactly","notes":"All Phase 0 children completed: types.rs, LLM provider, Palace extension + SessionStore","status":"closed","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:35:04.130741719Z","created_by":"quangdang","updated_at":"2026-05-29T00:23:42.417830703Z","closed_at":"2026-05-29T00:23:42.417532903Z","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-vctn","depends_on_id":"mr-2deb","type":"blocks","created_at":"2026-05-28T23:39:58.896147604Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vctn","depends_on_id":"mr-c6ky","type":"blocks","created_at":"2026-05-28T23:39:54.206037178Z","created_by":"quangdang","metadata":"{}","thread_id":""},{"issue_id":"mr-vctn","depends_on_id":"mr-i0v3","type":"blocks","created_at":"2026-05-28T23:39:56.693943881Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
290-
{"id":"mr-vk9v","title":"6.2 — Profile + Timeline + Patterns + Reflection + Crystallization","description":"# 6.2 — Profile + Timeline + Patterns + Reflection + Crystallization\n\n## Files (ALL NEW)\n- `crates/core/src/profile.rs`\n- `crates/core/src/timeline.rs`\n- `crates/core/src/patterns.rs`\n- `crates/core/src/reflect.rs`\n- `crates/core/src/crystallize.rs`\n\n## Profile\nAuto-compute from observations: top concepts (freq), top files, conventions, common errors, session count.\n\n## Timeline\nChronological listing with relative positioning. Filter by project, anchor, before/after offsets.\n\n## Patterns\nRecurring pattern extraction from observations. Frequency-based.\n\n## Reflection (LLM)\nLLM-driven reflection on memories. Generates insights.\n\n## Crystallize\nCrystallize action outcomes into Crystal records { narrative, key_outcomes, files_affected, lessons, source_actions }.\n\n## Tests per module: basic CRUD + edge cases","status":"open","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:38:39.319005339Z","created_by":"quangdang","updated_at":"2026-05-28T23:40:11.490272057Z","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-vk9v","depends_on_id":"mr-6022","type":"blocks","created_at":"2026-05-28T23:40:11.489634857Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
290+
{"id":"mr-vk9v","title":"6.2 — Profile + Timeline + Patterns + Reflection + Crystallization","description":"# 6.2 — Profile + Timeline + Patterns + Reflection + Crystallization\n\n## Files (ALL NEW)\n- `crates/core/src/profile.rs`\n- `crates/core/src/timeline.rs`\n- `crates/core/src/patterns.rs`\n- `crates/core/src/reflect.rs`\n- `crates/core/src/crystallize.rs`\n\n## Profile\nAuto-compute from observations: top concepts (freq), top files, conventions, common errors, session count.\n\n## Timeline\nChronological listing with relative positioning. Filter by project, anchor, before/after offsets.\n\n## Patterns\nRecurring pattern extraction from observations. Frequency-based.\n\n## Reflection (LLM)\nLLM-driven reflection on memories. Generates insights.\n\n## Crystallize\nCrystallize action outcomes into Crystal records { narrative, key_outcomes, files_affected, lessons, source_actions }.\n\n## Tests per module: basic CRUD + edge cases","status":"closed","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:38:39.319005339Z","created_by":"quangdang","updated_at":"2026-05-29T07:55:26.793189261Z","closed_at":"2026-05-29T07:55:26.793111961Z","close_reason":"Phase 6.2 completed: Profile + Timeline + Patterns + Reflection + Crystallization implemented with 40 new tests, 854 total passing","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-vk9v","depends_on_id":"mr-6022","type":"blocks","created_at":"2026-05-28T23:40:11.489634857Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
291291
{"id":"mr-vp6","title":"port: .gitignore support for project mining (upstream PR #229 + #233)","description":"Port the .gitignore support from upstream PR #229 and PR #233. The active mining path needs to respect .gitignore so that build artifacts aren't indexed. Add shared helper to read .gitignore patterns. Also add C/C++ extensions to READABLE_EXTENSIONS: .c, .cc, .cpp, .cxx, .h, .hh, .hpp, .hxx, .inl, .ixx.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-04-08T12:16:17.961611449Z","created_by":"quangdang","updated_at":"2026-04-08T13:07:07.932271071Z","closed_at":"2026-04-08T13:07:07.931846662Z","close_reason":"Partial: C/C++ extensions added. .gitignore parsing deferred as larger follow-up feature.","source_repo":".","compaction_level":0,"original_size":0}
292292
{"id":"mr-w5qr","title":"8.1 — Add 32 New MCP Tools","description":"# 8.1 — 32 New MCP Tools\n\n## File: MODIFY `crates/core/src/mcp_server.rs`\n\nAdd tools in groups:\n\n**Core (5 new):** memory_compress_file, memory_file_history, memory_sessions, memory_commits, memory_commit_lookup\n\n**Consolidation (3):** memory_consolidate, memory_consolidation_pipeline, memory_retention_score\n\n**Graph (3):** memory_graph_query, memory_temporal_graph, memory_graph_extraction\n\n**Multi-Agent (11):** memory_action_create/update, memory_frontier, memory_lease, memory_signal_send/read, memory_checkpoint, memory_routine_run, memory_mesh_sync, memory_team_share/feed\n\n**Smart Features (8):** memory_slot CRUD (6), memory_sketch_create/promote, memory_crystallize, memory_sentinel_create/trigger, memory_facet_tag/query, memory_lesson_save/recall, memory_reflect, memory_insight_list\n\n**Other (3):** memory_obsidian_export, memory_snapshot_create, memory_diagnose/heal\n\nEach tool: input schema, dispatch handler, mutation blocking in read-only mode.\n\n## Tests\n- Schema validation for each tool\n- Dispatch to correct handler\n- Read-only mode blocks mutations","status":"open","priority":1,"issue_type":"feature","created_at":"2026-05-28T23:39:27.350423382Z","created_by":"quangdang","updated_at":"2026-05-28T23:40:15.872574209Z","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"mr-w5qr","depends_on_id":"mr-vcqb","type":"blocks","created_at":"2026-05-28T23:40:15.872135909Z","created_by":"quangdang","metadata":"{}","thread_id":""}]}
293293
{"id":"mr-wal-under-palace-dir-gos3","title":"WAL writes routed under palace_dir/wal/...","status":"closed","priority":0,"issue_type":"task","created_at":"2026-05-26T05:16:26.493588100Z","created_by":"quangdang","updated_at":"2026-05-26T20:14:32.841888447Z","closed_at":"2026-05-26T20:14:32.841819847Z","close_reason":"WAL routed under palace_path/wal/ via threaded wal_dir PathBuf; old wal_dir_path removed; test_dispatch_writes_wal_entries updated to use palace_path; XDG-based test removed","source_repo":"mempalace_rust","source_repo_path":"/data/projects/mempalace_rust","compaction_level":0,"original_size":0,"labels":["phase-4"]}

0 commit comments

Comments
 (0)