3.3 KiB
3.3 KiB
| id | slug | title | status | kind | priority | labels | workflow_state | created_at | updated_at | assignee | legacy_ticket | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260607-062902-memory-root-uses-yoi-memory-marker | memory-root-uses-yoi-memory-marker | Use .yoi/memory marker for repo-local memory root | open | task | P1 |
|
ready | 2026-06-07T06:29:02Z | 2026-06-07T07:53:06Z | null | null |
Background
.yoi/ currently acts as a broad Yoi workspace/project marker, but using .yoi existence as the memory workspace/root marker is too coarse. .yoi now contains project records such as Tickets, workflows, Knowledge, and config, while .yoi/memory is generated/personal memory state.
Child worktrees should be able to include .yoi/tickets and .yoi/workflow without becoming independent memory roots. Memory root detection should key off .yoi/memory or explicit memory configuration rather than .yoi alone.
Goal
Separate Yoi project/workspace detection from repo-local memory root detection by treating .yoi as the project records marker and .yoi/memory as the repo-local memory root marker.
Target model
.yoi/means: this repository/workspace has Yoi project records/config..yoi/memory/means: this workspace or ancestor is the repo-local memory root.- Child worktrees may contain
.yoi/tickets/.yoi/workflowwithout causing memory writes into the child worktree. - Memory root lookup can walk ancestors until it finds
.yoi/memoryor an explicit configured root.
Requirements
- Audit current workspace/memory root detection code that uses
.yoiexistence. - Change memory root detection so
.yoialone is not enough to select a memory root. - Use an explicit memory root if configured.
- If repo-local memory is enabled and no explicit root is configured, use nearest ancestor containing
.yoi/memory. - If memory is explicitly enabled for a workspace and no
.yoi/memoryexists yet, create the configured/default memory directory lazily rather than requiring both config and preexisting directory. - If memory is explicitly disabled, do not use
.yoi/memoryeven if present, unless a separate compatibility mode intentionally says otherwise. - Decide and document fallback behavior when no explicit memory config and no ancestor
.yoi/memoryexists:- disabled; or
- user-data workspace overlay;
- but do not silently treat
.yoialone as memory root.
- Preserve existing generated-memory safety rules: do not copy memory into child worktrees and keep memory logs/generated records out of git-tracked project artifacts.
- Update docs/tests for child worktree behavior and memory root lookup.
Non-goals
- Removing
.yoias a Yoi project records marker. - Removing repo-local
.yoi/memorysupport entirely. - Changing Ticket/workflow/project record roots.
- Implementing the child worktree sparse-checkout change; that belongs to
narrow-yoi-worktree-sparse-exclusions.
Acceptance criteria
.yoialone no longer selects a memory root..yoi/memorycan be found by ancestor walk and used as repo-local memory root when enabled/allowed.- A child worktree containing
.yoi/ticketsbut not.yoi/memorydoes not become an independent memory workspace. - Explicit memory enable/disable behavior is tested.
- Documentation clearly distinguishes
.yoiproject records marker from.yoi/memoryrepo-local memory marker.