diff --git a/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/item.md b/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/item.md index c3274534..0358ad99 100644 --- a/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/item.md +++ b/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/item.md @@ -8,7 +8,7 @@ priority: P1 labels: [orchestrator, merge, ticket, workflow, validation] workflow_state: ready created_at: 2026-06-07T03:52:31Z -updated_at: 2026-06-07T06:16:17Z +updated_at: 2026-06-07T06:29:12Z assignee: null legacy_ticket: null --- diff --git a/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/thread.md b/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/thread.md index 73eac5b6..2017ec48 100644 --- a/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/thread.md +++ b/.yoi/tickets/open/20260607-035231-orchestrator-merge-completion/thread.md @@ -116,3 +116,27 @@ Workflow note: The child should commit implementation work in the child worktree and report diff/tests. Merge, review, Ticket closure, workflow file updates, and cleanup remain with the parent/human workflow. --- + + + +## Decision + +## Related worktree/memory boundary follow-ups + +Created two follow-up tickets from the `.yoi` sparse checkout / memory-root discussion: + +- `narrow-yoi-worktree-sparse-exclusions` + - Stop excluding all `.yoi/**` from child worktrees. + - Include tracked Yoi project records such as tickets/workflows/config where appropriate. + - Continue excluding generated memory, logs, locks, local/runtime/secret-like files. + - Define child-vs-main Ticket edit policy for branch-local artifacts vs final orchestration records. + +- `memory-root-uses-yoi-memory-marker` + - Keep `.yoi` as the Yoi project records marker. + - Stop treating `.yoi` alone as the memory root marker. + - Use explicit memory config or nearest ancestor `.yoi/memory` as repo-local memory root. + - Ensure child worktrees containing `.yoi/tickets` but not `.yoi/memory` do not become independent memory workspaces. + +These are relevant to Orchestrator merge/worktree automation because branch-local dossiers and workflow edits should be possible without copying generated memory into child worktrees. + +--- diff --git a/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/artifacts/.gitkeep b/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/item.md b/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/item.md new file mode 100644 index 00000000..eea90dff --- /dev/null +++ b/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/item.md @@ -0,0 +1,61 @@ +--- +id: 20260607-062902-memory-root-uses-yoi-memory-marker +slug: memory-root-uses-yoi-memory-marker +title: Use .yoi/memory marker for repo-local memory root +status: open +kind: task +priority: P1 +labels: [memory, workspace, worktree, config] +workflow_state: intake +created_at: 2026-06-07T06:29:02Z +updated_at: 2026-06-07T06:29:02Z +assignee: null +legacy_ticket: 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/workflow` without causing memory writes into the child worktree. +- Memory root lookup can walk ancestors until it finds `.yoi/memory` or an explicit configured root. + +## Requirements + +- Audit current workspace/memory root detection code that uses `.yoi` existence. +- Change memory root detection so `.yoi` alone 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/memory` exists 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/memory` even if present, unless a separate compatibility mode intentionally says otherwise. +- Decide and document fallback behavior when no explicit memory config and no ancestor `.yoi/memory` exists: + - disabled; or + - user-data workspace overlay; + - but do not silently treat `.yoi` alone 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 `.yoi` as a Yoi project records marker. +- Removing repo-local `.yoi/memory` support entirely. +- Changing Ticket/workflow/project record roots. +- Implementing the child worktree sparse-checkout change; that belongs to `narrow-yoi-worktree-sparse-exclusions`. + +## Acceptance criteria + +- `.yoi` alone no longer selects a memory root. +- `.yoi/memory` can be found by ancestor walk and used as repo-local memory root when enabled/allowed. +- A child worktree containing `.yoi/tickets` but not `.yoi/memory` does not become an independent memory workspace. +- Explicit memory enable/disable behavior is tested. +- Documentation clearly distinguishes `.yoi` project records marker from `.yoi/memory` repo-local memory marker. diff --git a/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/thread.md b/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/thread.md new file mode 100644 index 00000000..98ecb8af --- /dev/null +++ b/.yoi/tickets/open/20260607-062902-memory-root-uses-yoi-memory-marker/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- diff --git a/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/artifacts/.gitkeep b/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/item.md b/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/item.md new file mode 100644 index 00000000..50a33d93 --- /dev/null +++ b/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/item.md @@ -0,0 +1,59 @@ +--- +id: 20260607-062902-narrow-yoi-worktree-sparse-exclusions +slug: narrow-yoi-worktree-sparse-exclusions +title: Narrow child worktree .yoi sparse exclusions +status: open +kind: task +priority: P1 +labels: [worktree, workflow, memory, ticket, orchestration] +workflow_state: intake +created_at: 2026-06-07T06:29:02Z +updated_at: 2026-06-07T06:29:02Z +assignee: null +legacy_ticket: null +--- + +## Background + +Current worktree workflow excludes `.yoi/**` from child implementation worktrees. This was originally a conservative way to keep generated/personal memory and runtime state out of child worktrees. As Ticket/Workflow orchestration has become project-record based, excluding all of `.yoi` is too broad. + +Project records such as `.yoi/tickets`, `.yoi/workflow`, `.yoi/knowledge`, and `.yoi/ticket.config.toml` may need to be visible in child worktrees for branch-local artifacts, workflow edits, review dossiers, and Ticket-aware implementation. Generated memory/runtime/local files should still be excluded. + +## Goal + +Narrow child worktree sparse-checkout exclusions so git-tracked Yoi project records can appear in child worktrees while memory/local/runtime state remains excluded. + +## Requirements + +- Update `worktree-workflow` and any worktree creation helpers/scripts to stop excluding all of `.yoi/**`. +- Include git-tracked project record paths where appropriate: + - `.yoi/tickets/**`; + - `.yoi/workflow/**`; + - `.yoi/knowledge/**` when curated/tracked; + - `.yoi/ticket.config.toml`; + - other tracked Yoi project config/resources as needed. +- Continue excluding generated/personal/local/runtime paths, including at least: + - `.yoi/memory/**`; + - `.yoi/**/_logs/**`; + - `.yoi/tickets/.ticket-backend.lock`; + - local/override/secret-like files according to existing ignore/config policy. +- Define the edit policy for Ticket records in child worktrees: + - branch-local artifacts / merge-ready dossier may be written in child worktree when part of the implementation branch; + - active orchestration progress and final Ticket review/approval/close remain main-workspace responsibilities unless explicitly designed otherwise; + - avoid concurrent edits to the same Ticket thread from main and child worktree. +- Ensure generated/personal memory is not copied into child worktrees. +- Update tests/docs/workflows that currently assume `.yoi` is absent from child worktrees. + +## Non-goals + +- Moving memory storage out of `.yoi/memory`; that belongs to the memory root marker ticket. +- Making child implementation Pods responsible for final Ticket closure. +- Allowing secret/local files into child worktrees. +- Replacing the main workspace as the orchestration authority. + +## Acceptance criteria + +- New child worktrees include relevant tracked `.yoi` project records but exclude `.yoi/memory` and local/runtime files. +- Worktree workflow documentation states the new sparse-checkout rules and Ticket edit policy. +- Child worktree creation validation checks that memory/local paths are absent while project record paths can be present. +- Orchestrator workflows can use child worktrees for branch-local artifacts/dossiers without copying generated memory. diff --git a/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/thread.md b/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/thread.md new file mode 100644 index 00000000..98ecb8af --- /dev/null +++ b/.yoi/tickets/open/20260607-062902-narrow-yoi-worktree-sparse-exclusions/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by LocalTicketBackend create. + +---