feat(B-0894.3): per-persona worktrees outside operator's primary repo — ~/.zeta/agents/<persona>/<stream>/ canonical#5697
Merged
AceHack merged 1 commit intoMay 28, 2026
Conversation
… — canonical location ~/.zeta/agents/<persona>/<stream>/ Operator 2026-05-28 surfaced residual failure mode after B-0894 (PR #5696) landed: "~/Documents/src/repos/Zeta/worktrees/lior-* this sometimes locks up where i can't switch to main cause lior has it locked to a worktree" + "~/Documents/src/repos/Zeta/ is for shared up to date main and for me to push changes" + "per persona or even per persona's parallel strems just for full isolation" + "or maybe just .zeta/agents/". B-0894 (PR #5696) correctly moved off /private/tmp/ (reboot-survival) but placed the new default UNDER operator's primary repo, where agent worktrees can still hold branch refs and block operator's `git checkout`. B-0894.3 corrects to ~/.zeta/agents/<persona>/<stream>/ — outside operator's primary entirely; per-persona base; per-stream isolation. Changes: - B-0894.3 backlog row (P1) with operator's verbatim correction + architecture table + Lior-migration-non-blocking framing - agent-worktree-hygiene rule: - Carved sentence: two compounding invariants (reboot-survival + operator-primary-stays-agent-free) - Rule 1: example paths flipped to ~/.zeta/agents/<persona>/ - Rule 2: default location flipped from ~/Documents/src/repos/Zeta/ worktrees/<surface>-* to ~/.zeta/agents/<persona>/<stream-id>/; Lior migration documented as non-blocking future work - Rule 4: audit cmd scans ~/.zeta/agents/ + legacy surfaces - Rule 5: two compounding invariants + restored anchor table showing PR #5696's location triggered operator's blocking critique + new ~/.zeta/agents/ canonical location - Audit + verify-no-main-held commands scan all 4 surfaces (~/.zeta/agents/, legacy ~/Documents repo, /private/tmp, /tmp) The worktree authoring this PR is itself at ~/.zeta/agents/otto-cli/b0894-3-per-persona-outside-repo-2026-05-28/ — first instance of the new canonical pattern. Operator primary at ~/Documents/src/repos/Zeta/ is unaffected (no git status pollution, no operator-main-blocking risk). Composes with: B-0894 (parent), B-0750 (cleanup), B-0751 (per-agent clones), B-0894.1 (future ~/.zeta/bus/ migration). Co-Authored-By: Claude <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
AceHack
added a commit
that referenced
this pull request
May 28, 2026
…architectural decision in flight (#5698) Operator 2026-05-28 surfaced architectural question mid-implementation of B-0867.5 Phase 1 observe.ts + choose.ts skeletons: how do agent- loop entry-point tools map to framework primitives? Three conventions alive in substrate: - OPLE rule: Observe / Persist / Limit / Emit (per B-0862) - B-0879 OELS: Observe / Emit / Limit / Simulate - Operator initial direction: observe + choose (compressed 2-tool) Plus the deeper internal-loop-vs-external-coordination-loop split operator named ("they compose but are independent"). This row preserves the architectural question + 3 viable resolutions + documents local draft state at ~/.zeta/agents/otto-cli/observe-choose-skeleton-0512z/ so the decision survives any context shift / cold boot. Filed at brief- ack #6 per holding-without-named-dependency-is-standing-by-failure forced-decomposition discipline; counter resets via concrete artifact. Authored at canonical ~/.zeta/agents/otto-cli/ location per B-0894.3 (merged earlier this session via PR #5697). Co-authored-by: Lior <lior@zeta.dev> Co-authored-by: Claude <noreply@anthropic.com>
This was referenced May 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Operator-named refinement
What B-0894 (PR #5696) got right vs what B-0894.3 corrects
/private/tmpclears on reboot)/private/tmp/~/Documents/src/repos/Zeta/worktrees/~/.zeta/agents/<persona>/<stream>/, outside operator's primary entirelyworktrees/<surface>-*~/.zeta/mirrors~/.claude/dotfile-namespace pattern (composes with future~/.zeta/bus/per B-0894.1)The architecture
Empirical proof
This PR's worktree lives at
~/.zeta/agents/otto-cli/b0894-3-per-persona-outside-repo-2026-05-28/— the first instance of the new canonical pattern. Operator primary checkout (~/Documents/src/repos/Zeta/) is unaffected: nogit statuspollution, no[main]-holding risk, operator cangit checkoutany branch unblocked.Same dogfooding pattern as PR #5696 (which used persistent-location to land persistent-location). Iterative refinement is operationally clean — operator surfaced the residual issue, follow-up PR fixes it without retracting the parent.
What this PR delivers
agent-worktree-hygienerule update:~/.zeta/agents/<persona>/~/Documents/src/repos/Zeta/worktrees/<surface>-*(B-0894) to~/.zeta/agents/<persona>/<stream-id>/(B-0894.3); Lior migration documented as non-blocking~/.zeta/agents/+ all legacy surfacesComposes with
d3962a9ef) — reboot-survival fix; this PR refines location~/.zeta/bus/; same namespacetick-must-never-stop.md— sentinel session-exit non-persistence is sibling at harness-level; this PR is filesystem-level. SessionStart hook + first-action discipline produces auto-arming sentinel at session-open (empirically validated this session per operator observation)What this PR does NOT deliver (future-state work)
worktrees/) — non-blocking; coordinated with Lior's loop substrate~/.zeta/bus/~/Documents/src/repos/Zeta/worktrees/otto-cli-reboot-survival-fix-0434z/(the PR feat(B-0894): reboot-survival worktree-location discipline — flip default from /private/tmp/ to ~/Documents/src/repos/Zeta/worktrees/ #5696 authoring worktree) — can be removed in a separate housekeeping passTest plan
~/.zeta/agents/otto-cli/b0894-3-per-persona-outside-repo-2026-05-28/) — dogfooding proof~/Documents/src/repos/Zeta/) unaffected; no[main]blocking risk introduced~/.zeta/agents/<persona>/<stream>/per new default (validation by observation)🤖 Generated with Claude Code