yoi/.yoi/tickets/closed/20260607-062902-narrow-yoi-worktree-sparse-exclusions/thread.md

10 KiB

Created

Created by LocalTicketBackend create.


Plan

Preflight / implementation intent

Classification: implementation-ready and should run before memory-root-uses-yoi-memory-marker.

Intent:

  • Stop treating child worktrees as code-only surfaces that exclude all .yoi/**.
  • Keep Yoi project records visible in child worktrees where useful: Tickets, workflows, curated Knowledge, and project config.
  • Continue excluding generated/personal/local runtime state, especially .yoi/memory.

Updated decision from discussion:

  • .yoi remains the project records/workspace marker.
  • .yoi/memory is the repo-local memory marker and should not be copied into child worktrees.
  • The worktree workflow should stop saying child worktrees must not contain .yoi; it should instead define which .yoi subpaths are included/excluded and how Ticket edits are split between branch-local artifacts and main-workspace final records.

Implementation direction:

  • Update .yoi/workflow/worktree-workflow.md:
    • replace !/.yoi/** sparse rules with narrower exclusions for .yoi/memory, logs, locks, local/runtime/secret-like paths;
    • update validation from test ! -e .../.yoi to checks that memory/local paths are absent and project records are allowed;
    • update child-worktree prohibitions from “no .yoi” to “no generated memory/local/runtime files”;
    • define Ticket edit policy: branch-local artifacts/dossiers may live in child worktree; active orchestration progress and final review/close remain main-workspace responsibilities unless explicitly designed otherwise.
  • Update .yoi/workflow/multi-agent-workflow.md where it still says .yoi is excluded or that Ticket/workflow/docs records are always main-workspace-only.
  • Update generated role guidance/tests if code still says child worktrees exclude .yoi broadly.
  • Keep the change focused on worktree sparse/workflow policy; memory root detection changes belong to memory-root-uses-yoi-memory-marker.

Validation:

  • Run focused tests for any crate touched.
  • Run target/debug/yoi ticket doctor, cargo fmt --check, and git diff --check.
  • If only workflow/docs change, no broad cargo tests are required beyond relevant prompt/guidance tests if touched.

Intake summary

Implementation-ready: keep .yoi as the project records marker, stop excluding all .yoi/** from child worktrees, include tracked project records, exclude .yoi/memory/logs/local/runtime files, and update workflow/role guidance plus Ticket edit policy. Memory root detection remains a separate follow-up ticket.


State changed

Ticket intake complete; workflow_state intake -> ready.


Implementation report

Delegation

Implementation delegated to child Pod narrow-yoi-worktree-coder-20260607 in worktree .worktree/narrow-yoi-worktree-sparse-exclusions on branch work/narrow-yoi-worktree-sparse-exclusions.

This worktree intentionally uses the proposed narrower sparse rules:

  • includes .yoi project records;
  • excludes .yoi/memory, memory logs, ticket backend lock, and local/runtime paths.

Scope:

  • Update worktree-workflow and multi-agent-workflow away from .yoi whole-directory exclusion.
  • Define project-record vs generated-memory/local-runtime boundaries.
  • Update role guidance/tests if they still say child worktrees exclude all .yoi.
  • Do not implement memory-root detection; memory-root-uses-yoi-memory-marker follows after this.

The child should commit implementation work in the child worktree and report diff/tests. Merge, review, Ticket closure, and cleanup remain with the parent/human workflow.


Implementation report

Implementation report

Coder Pod narrow-yoi-worktree-coder-20260607 completed implementation in .worktree/narrow-yoi-worktree-sparse-exclusions.

Commit:

  • ee85b51 workflow: narrow yoi worktree sparse exclusions

Reported summary:

  • Updated .yoi/workflow/worktree-workflow.md so child worktrees may include tracked .yoi project records.
  • Replaced broad .yoi/** sparse exclusion guidance with narrower exclusions for .yoi/memory, logs, locks, local/runtime/cache/tmp/session/socket/pod state, and secret-like paths.
  • Updated validation guidance to allow .yoi while checking .yoi/memory and local/runtime/log/lock/secret-like paths are absent.
  • Added explicit Ticket edit policy: branch-local artifacts/dossiers may live in child worktrees; active orchestration progress and final review/approval/close stay main-workspace responsibilities.
  • Updated .yoi/workflow/multi-agent-workflow.md to stop describing .yoi as broadly excluded and to clarify child-worktree project-record boundaries.
  • Updated generated role guidance/tests in crates/client/src/ticket_role.rs and crates/tui/src/multi_pod.rs.
  • Did not implement memory root detection and did not recreate .yoi/memory.

Reported validation:

  • cargo test -p client ticket_role --lib
  • cargo test -p tui ticket_queue_notification --lib
  • target/debug/yoi ticket doctor
  • cargo fmt --check
  • git diff --check
  • nix build .#yoi

External review will be delegated before merge.


Review: request changes

Request changes.

Blocker:

  • worktree-workflow sparse-checkout rules do not exclude recursive .yoi/**/_logs/**, even though the Ticket explicitly requires generated log paths under .yoi/**/_logs/** to remain out of child worktrees.

Evidence:

  • .yoi/workflow/worktree-workflow.md only excludes root log dirs:
    • !/.yoi/logs/
    • !/.yoi/logs/**
    • !/.yoi/_logs/
    • !/.yoi/_logs/**
  • There is no committed recursive _logs sparse rule.
  • The validation block checks for any */_logs directory, so a tracked nested .yoi/<project-record>/_logs/... path would be allowed by sparse-checkout and then fail validation rather than being excluded by the rules.

Suggested minimal fix:

  • Add recursive sparse exclusions such as:
    • !/.yoi/**/_logs/
    • !/.yoi/**/_logs/**
  • Consider whether the same recursive treatment is intended for logs, locks, local, runtime, pods, sessions, sockets, tmp, cache, and secrets; the required blocker is strongest for _logs because the Ticket names .yoi/**/_logs/** explicitly.

Other checks passed:

  • Workflow docs no longer require whole-directory .yoi exclusion.
  • Project records are allowed in child worktrees.
  • Ticket edit policy is clear enough and keeps final review/approval/close as main-workspace responsibilities.
  • Generated role guidance/tests align with the new boundary.
  • Memory root detection was not changed.

Reviewer validation:

  • cargo test -p client ticket_role --lib
  • cargo test -p tui ticket_queue_notification --lib
  • target/debug/yoi ticket doctor
  • cargo fmt --check
  • git diff --check develop...HEAD
  • nix build .#yoi
  • git merge-tree --write-tree develop HEAD

Merge readiness: not ready until recursive _logs sparse exclusion is fixed.


Review: approve

Approved after fixup commit 6f33275.

Evidence:

  • Previous blocker is fixed in .yoi/workflow/worktree-workflow.md: sparse rules now include both !/.yoi/**/_logs/ and !/.yoi/**/_logs/**.
  • Nearby guidance explicitly says generated log trees exclude root _logs and recursive .yoi/**/_logs/**.
  • No broad .yoi/** exclusion was reintroduced.
  • .yoi project records remain allowed in child worktrees.
  • Generated/local state remains excluded: .yoi/memory, logs, locks, local/runtime/pods/sessions/sockets/tmp/cache/secrets, local overrides, and secret-like files remain listed in sparse rules.
  • Ticket edit policy remains intact: active orchestration progress and final review/approval/close remain main-workspace responsibilities.
  • Memory root detection was not changed; diff remains limited to workflow/guidance files.

Reviewer validation:

  • cargo test -p client ticket_role --lib
  • cargo test -p tui ticket_queue_notification --lib
  • target/debug/yoi ticket doctor
  • cargo fmt --check
  • git diff --check develop...HEAD
  • nix build .#yoi
  • git merge-tree --write-tree develop HEAD

Merge readiness: approved; worktree clean at 6f33275.


State changed

Ticket closed; workflow_state set to done.


Closed

Implemented, reviewed, merged, and validated.

Summary:

  • Updated worktree workflow rules so child worktrees may include tracked .yoi project records instead of excluding all .yoi/**.
  • Sparse-checkout guidance now excludes generated/personal/local/runtime state such as .yoi/memory, root and recursive _logs, logs, locks, local/runtime/pods/sessions/sockets/tmp/cache/secrets, local overrides, and secret-like files.
  • Updated validation guidance to check excluded generated/local paths rather than requiring .yoi absence.
  • Updated child-worktree Ticket edit policy: branch-local artifacts/dossiers may live in child worktrees; active orchestration progress and final review/approval/close remain main-workspace responsibilities.
  • Updated multi-agent workflow and generated role/queue guidance to match the new boundary.
  • Did not change memory root detection; memory-root-uses-yoi-memory-marker remains the follow-up for that.

Implementation:

  • Child commits: ee85b51 workflow: narrow yoi worktree sparse exclusions, 6f33275 fixup! workflow: narrow yoi worktree sparse exclusions
  • Merge commit: merge: narrow yoi worktree sparse exclusions

Review:

  • External reviewer initially requested recursive .yoi/**/_logs/** sparse exclusions.
  • Fixup added recursive _logs exclusions.
  • Reviewer approved after fixup.

Validation after merge:

  • cargo test -p client ticket_role --lib
  • cargo test -p tui ticket_queue_notification --lib
  • target/debug/yoi ticket doctor
  • cargo fmt --check
  • git diff --check