Cross-repo worktree isolation for parallel agents #188

Open
opened 2026-03-27 00:40:14 +00:00 by forgejo_admin · 9 comments

Type

Feature

Lineage

Standalone — discovered during parallel agent incident on 2026-03-26 where three Dev agents clobbered each other's branches on westside-playground.

Repo

  • Tracker: forgejo_admin/pal-e-platform (this issue — where the gap was discovered)
  • Primary PR: ldraney/claude-custom (hooks + agent profiles)
  • SOP updates: pal-e-docs via MCP tools (worktree-workflow, agent-spawn-conventions)

User Story

As a platform operator spawning parallel Dev agents
I want cross-repo isolation so that agents working on repos OTHER than the spawning repo get their own isolated checkout
So that parallel agents cannot clobber each other's branches and working trees

Context

The worktree-workflow SOP (pal-e-docs slug: worktree-workflow) documents isolation for the spawning repo. When Betty Sue spawns a Dev agent with isolation: "worktree", Claude Code creates a worktree at .claude/worktrees/agent-{id}/ inside the spawning repo. This works perfectly for single-repo work.

The gap: agents frequently work on repos OTHER than the spawning repo. For example, an agent spawned from pal-e-platform may need to work on westside-playground, pal-e-docs-sdk, or basketball-api. In this case, the target repo has no isolation — all agents share the same ~/westside-playground/ checkout. The spawning repo's worktree isolation is irrelevant because the actual code changes happen in a completely different directory.

Incident (2026-03-26): Three parallel Dev agents were spawned to work on westside-playground. All three ran cd ~/westside-playground && git checkout ... against the same shared checkout. They clobbered each other's branches, staged files, and working tree state. Work was lost and had to be redone.

Root cause: The worktree-workflow SOP and agent-spawn-conventions assume agents work on the spawning repo. There is no convention, SOP, or enforcement mechanism for cross-repo isolation.

File Targets

This is a multi-repo concern. The work spans documentation (pal-e-docs SOPs) and enforcement (claude-custom hooks/agent configs):

Enforcement (claude-custom repo — primary PR target ldraney/claude-custom):

  • hooks/cross-repo-isolation.sh (new) — PreToolUse hook that detects when an agent runs cd ~/other-repo && git checkout on a shared checkout and warns/blocks
  • agents/dev.md — add cross-repo isolation instructions to the agent profile

SOP updates (pal-e-docs, via Dottie — separate child issue):

  • worktree-workflow — add "Cross-Repo Isolation" section documenting the /tmp/ clone or git worktree add convention for target repos
  • agent-spawn-conventions — add cross-repo isolation to the Pre-Spawn Checklist

Platform (this repo):

  • This issue is filed here because the SOP gap was discovered during platform operations. The actual code changes span claude-custom and pal-e-docs.

Files the agent should NOT touch:

  • terraform/ — no infrastructure changes needed
  • salt/ — no Salt changes needed

Acceptance Criteria

  • When a Dev agent works on a repo other than the spawning repo, it clones to /tmp/{repo}-{branch} or uses git worktree add on the target repo — never cd ~/shared-checkout && git checkout
  • When parallel agents target the same non-spawning repo, each agent gets its own isolated working directory
  • The worktree-workflow SOP documents the cross-repo isolation convention with clear examples
  • The agent-spawn-conventions pre-spawn checklist includes a cross-repo isolation step
  • A PreToolUse hook in claude-custom warns when an agent attempts cd ~/repo && git checkout on a shared checkout (the hook should detect the pattern and suggest the isolated alternative)
  • The Dev agent profile (agents/dev.md) includes instructions for cross-repo isolation
  • /tmp/ clones cleaned up after agent completes (cleanup script or convention in cleanup-worktrees.sh)

Test Expectations

  • Manual test: spawn two parallel agents targeting the same non-spawning repo — confirm they get separate working directories
  • Manual test: verify the PreToolUse hook fires a warning when an agent attempts the unsafe cd ~/repo && git checkout pattern
  • Manual test: verify the hook does NOT fire for the spawning repo (which already has worktree isolation via isolation: worktree)
  • Run command: bash hooks/cross-repo-isolation.sh with mock inputs to validate pattern detection

Constraints

  • Follow the existing worktree-workflow SOP structure — add a new section, don't restructure
  • The /tmp/ clone pattern is already precedented in the SOP ("Some pal-e-docs worktrees were manually placed in /tmp. Not standard." — make it standard for cross-repo)
  • The CLAUDE.md in pal-e-platform already has ## Worktree Isolation referencing /tmp/ clones for claude-custom — align with that convention
  • Hook must be lightweight (< 50ms) — pattern match on command string, not filesystem checks
  • Cross-repo isolation is the agent's responsibility (convention + hook warning), not Claude Code's isolation: worktree (which only handles the spawning repo)
  • QA agents are read-only (no Write/Edit/Bash write tools) — cross-repo isolation is Dev-agent-only. No changes needed for QA agent profiles.

Decomposition

This umbrella issue tracks the full scope. Execution is split into 2 child issues per the 5-minute rule:

Child 1: ldraney/claude-custom — Hook + Agent Profile

  • Create hooks/cross-repo-isolation.sh PreToolUse hook
  • Update agents/dev.md with cross-repo isolation instructions
  • Add /tmp/ clone cleanup to cleanup-worktrees.sh
  • Covers AC: 1, 2, 5, 6, 7

Child 2: pal-e-docs SOP Updates (Dottie)

  • Update worktree-workflow SOP with "Cross-Repo Isolation" section
  • Update agent-spawn-conventions pre-spawn checklist
  • Covers AC: 3, 4

Note: claude-custom#184 covers adjacent gaps (freshness, cleanup) but NOT the cross-repo isolation hook or /tmp/ clone convention — no overlap.

Board Labels

  • arch:worktree (not arch:ci-pipeline — this is worktree/hooks domain, not Woodpecker CI)
  • story:dev-execute

Checklist

  • Child issue created on ldraney/claude-custom for hook + agent profile
  • Child issue created for pal-e-docs SOP updates (Dottie)
  • worktree-workflow SOP updated
  • agent-spawn-conventions updated
  • PreToolUse hook implemented and tested
  • Dev agent profile updated
  • /tmp/ cleanup mechanism in place
  • worktree-workflow (pal-e-docs SOP) — the existing isolation SOP that needs the cross-repo section
  • agent-spawn-conventions (pal-e-docs convention) — pre-spawn checklist needs cross-repo step
  • claude-custom repo — hooks and agent configs live here
  • claude-custom#184 — adjacent worktree gaps (freshness, cleanup) — no overlap with this issue
  • todo-worktree-staleness-prevention (pal-e-docs) — prior incident that motivated the freshness check (same class of problem: isolation gap)

Body updated 2026-03-27 from review comments #7887, #7900, #8755, #9553. Refinements merged: PR target clarification, /tmp/ cleanup AC, QA exclusion constraint, decomposition plan, arch label correction.

### Type Feature ### Lineage Standalone — discovered during parallel agent incident on 2026-03-26 where three Dev agents clobbered each other's branches on `westside-playground`. ### Repo - **Tracker:** `forgejo_admin/pal-e-platform` (this issue — where the gap was discovered) - **Primary PR:** `ldraney/claude-custom` (hooks + agent profiles) - **SOP updates:** `pal-e-docs` via MCP tools (worktree-workflow, agent-spawn-conventions) ### User Story As a platform operator spawning parallel Dev agents I want cross-repo isolation so that agents working on repos OTHER than the spawning repo get their own isolated checkout So that parallel agents cannot clobber each other's branches and working trees ### Context The `worktree-workflow` SOP (pal-e-docs slug: `worktree-workflow`) documents isolation for the **spawning repo**. When Betty Sue spawns a Dev agent with `isolation: "worktree"`, Claude Code creates a worktree at `.claude/worktrees/agent-{id}/` inside the spawning repo. This works perfectly for single-repo work. **The gap:** agents frequently work on repos OTHER than the spawning repo. For example, an agent spawned from `pal-e-platform` may need to work on `westside-playground`, `pal-e-docs-sdk`, or `basketball-api`. In this case, the target repo has **no isolation** — all agents share the same `~/westside-playground/` checkout. The spawning repo's worktree isolation is irrelevant because the actual code changes happen in a completely different directory. **Incident (2026-03-26):** Three parallel Dev agents were spawned to work on `westside-playground`. All three ran `cd ~/westside-playground && git checkout ...` against the same shared checkout. They clobbered each other's branches, staged files, and working tree state. Work was lost and had to be redone. **Root cause:** The `worktree-workflow` SOP and `agent-spawn-conventions` assume agents work on the spawning repo. There is no convention, SOP, or enforcement mechanism for cross-repo isolation. ### File Targets This is a multi-repo concern. The work spans documentation (pal-e-docs SOPs) and enforcement (claude-custom hooks/agent configs): **Enforcement (claude-custom repo — primary PR target `ldraney/claude-custom`):** - `hooks/cross-repo-isolation.sh` (new) — PreToolUse hook that detects when an agent runs `cd ~/other-repo && git checkout` on a shared checkout and warns/blocks - `agents/dev.md` — add cross-repo isolation instructions to the agent profile **SOP updates (pal-e-docs, via Dottie — separate child issue):** - `worktree-workflow` — add "Cross-Repo Isolation" section documenting the `/tmp/` clone or `git worktree add` convention for target repos - `agent-spawn-conventions` — add cross-repo isolation to the Pre-Spawn Checklist **Platform (this repo):** - This issue is filed here because the SOP gap was discovered during platform operations. The actual code changes span `claude-custom` and `pal-e-docs`. Files the agent should NOT touch: - `terraform/` — no infrastructure changes needed - `salt/` — no Salt changes needed ### Acceptance Criteria - [ ] When a Dev agent works on a repo other than the spawning repo, it clones to `/tmp/{repo}-{branch}` or uses `git worktree add` on the target repo — never `cd ~/shared-checkout && git checkout` - [ ] When parallel agents target the same non-spawning repo, each agent gets its own isolated working directory - [ ] The `worktree-workflow` SOP documents the cross-repo isolation convention with clear examples - [ ] The `agent-spawn-conventions` pre-spawn checklist includes a cross-repo isolation step - [ ] A PreToolUse hook in `claude-custom` warns when an agent attempts `cd ~/repo && git checkout` on a shared checkout (the hook should detect the pattern and suggest the isolated alternative) - [ ] The Dev agent profile (`agents/dev.md`) includes instructions for cross-repo isolation - [ ] `/tmp/` clones cleaned up after agent completes (cleanup script or convention in `cleanup-worktrees.sh`) ### Test Expectations - [ ] Manual test: spawn two parallel agents targeting the same non-spawning repo — confirm they get separate working directories - [ ] Manual test: verify the PreToolUse hook fires a warning when an agent attempts the unsafe `cd ~/repo && git checkout` pattern - [ ] Manual test: verify the hook does NOT fire for the spawning repo (which already has worktree isolation via `isolation: worktree`) - Run command: `bash hooks/cross-repo-isolation.sh` with mock inputs to validate pattern detection ### Constraints - Follow the existing `worktree-workflow` SOP structure — add a new section, don't restructure - The `/tmp/` clone pattern is already precedented in the SOP ("Some pal-e-docs worktrees were manually placed in /tmp. Not standard." — make it standard for cross-repo) - The `CLAUDE.md` in `pal-e-platform` already has `## Worktree Isolation` referencing `/tmp/` clones for `claude-custom` — align with that convention - Hook must be lightweight (< 50ms) — pattern match on command string, not filesystem checks - Cross-repo isolation is the agent's responsibility (convention + hook warning), not Claude Code's `isolation: worktree` (which only handles the spawning repo) - QA agents are read-only (no Write/Edit/Bash write tools) — cross-repo isolation is Dev-agent-only. No changes needed for QA agent profiles. ### Decomposition This umbrella issue tracks the full scope. Execution is split into 2 child issues per the 5-minute rule: **Child 1: `ldraney/claude-custom` — Hook + Agent Profile** - Create `hooks/cross-repo-isolation.sh` PreToolUse hook - Update `agents/dev.md` with cross-repo isolation instructions - Add `/tmp/` clone cleanup to `cleanup-worktrees.sh` - Covers AC: 1, 2, 5, 6, 7 **Child 2: `pal-e-docs` SOP Updates (Dottie)** - Update `worktree-workflow` SOP with "Cross-Repo Isolation" section - Update `agent-spawn-conventions` pre-spawn checklist - Covers AC: 3, 4 Note: `claude-custom#184` covers adjacent gaps (freshness, cleanup) but NOT the cross-repo isolation hook or `/tmp/` clone convention — no overlap. ### Board Labels - `arch:worktree` (not `arch:ci-pipeline` — this is worktree/hooks domain, not Woodpecker CI) - `story:dev-execute` ### Checklist - [ ] Child issue created on `ldraney/claude-custom` for hook + agent profile - [ ] Child issue created for pal-e-docs SOP updates (Dottie) - [ ] `worktree-workflow` SOP updated - [ ] `agent-spawn-conventions` updated - [ ] PreToolUse hook implemented and tested - [ ] Dev agent profile updated - [ ] `/tmp/` cleanup mechanism in place ### Related - `worktree-workflow` (pal-e-docs SOP) — the existing isolation SOP that needs the cross-repo section - `agent-spawn-conventions` (pal-e-docs convention) — pre-spawn checklist needs cross-repo step - `claude-custom` repo — hooks and agent configs live here - `claude-custom#184` — adjacent worktree gaps (freshness, cleanup) — no overlap with this issue - `todo-worktree-staleness-prevention` (pal-e-docs) — prior incident that motivated the freshness check (same class of problem: isolation gap) --- _Body updated 2026-03-27 from review comments #7887, #7900, #8755, #9553. Refinements merged: PR target clarification, /tmp/ cleanup AC, QA exclusion constraint, decomposition plan, arch label correction._
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-418-2026-03-25
Well-scoped issue with thorough context and verified file targets, but three items need resolution before moving to next_up:

  • Type mismatch: Board item says type:bug, issue says ### Type: Feature -- must agree
  • Missing story label: No story: label on board item #418 -- suggest story:dev-execute
  • Repo placement ambiguity: Issue filed on pal-e-platform but code changes land in claude-custom -- clarify PR target or create child issue on claude-custom

Non-blocking recommendations: add /tmp/ cleanup acceptance criterion, consider QA agent cross-repo isolation scope.

## Scope Review: NEEDS_REFINEMENT Review note: `review-418-2026-03-25` Well-scoped issue with thorough context and verified file targets, but three items need resolution before moving to next_up: - **Type mismatch:** Board item says `type:bug`, issue says `### Type: Feature` -- must agree - **Missing story label:** No `story:` label on board item #418 -- suggest `story:dev-execute` - **Repo placement ambiguity:** Issue filed on `pal-e-platform` but code changes land in `claude-custom` -- clarify PR target or create child issue on `claude-custom` Non-blocking recommendations: add `/tmp/` cleanup acceptance criterion, consider QA agent cross-repo isolation scope.
Author
Owner

Refinements from review-418-2026-03-25:

  1. Type: Bug (not Feature). This is broken behavior — agents should be isolated but aren't. Updating issue type.

  2. Repo placement: Primary PR lands on ldraney/claude-custom (hooks + agent profiles). SOP updates land in pal-e-docs via MCP tools. Issue stays on pal-e-platform (where the gap was discovered) as the tracking repo.

  3. Cleanup criterion added: /tmp/ clones need cleanup too — add to acceptance criteria.

  4. QA agents: QA agents are read-only (no Write/Edit tools) so they can't clobber branches. Cross-repo isolation is Dev-agent-only.

**Refinements from review-418-2026-03-25:** 1. **Type: Bug** (not Feature). This is broken behavior — agents should be isolated but aren't. Updating issue type. 2. **Repo placement:** Primary PR lands on `ldraney/claude-custom` (hooks + agent profiles). SOP updates land in pal-e-docs via MCP tools. Issue stays on pal-e-platform (where the gap was discovered) as the tracking repo. 3. **Cleanup criterion added:** `/tmp/` clones need cleanup too — add to acceptance criteria. 4. **QA agents:** QA agents are read-only (no Write/Edit tools) so they can't clobber branches. Cross-repo isolation is Dev-agent-only.
Author
Owner

Scope Review (re-review): NEEDS_REFINEMENT

Review note: review-418-2026-03-25-r2
Refinements addressed findings in comments but issue body was never updated. One of three original findings resolved, two persist.

Resolved:

  • story:dev-execute label added to board item #418

Still open:

  • Type mismatch persists: Board item says type:bug, issue body still says ### Type: Feature. Refinement comment declared "updating" but body unchanged. Recommend aligning to type:feature on the board item -- the issue body is structured as a Feature (User Story, Context, File Targets, Constraints) and would need full restructuring to match the Bug template.
  • Issue body not edited: Refinement comment #7887 stated three changes (type fix, repo clarification, cleanup criterion) but none were applied to the issue body. A Dev agent reads the issue body, not comments. Needed edits: (a) Checklist: specify PR target is ldraney/claude-custom, (b) Acceptance Criteria: add /tmp/ cleanup criterion, (c) Constraints: note QA agents excluded.

Once the board label is aligned and the issue body is updated with the refinement content, this ticket is READY.

## Scope Review (re-review): NEEDS_REFINEMENT Review note: `review-418-2026-03-25-r2` Refinements addressed findings in comments but issue body was never updated. One of three original findings resolved, two persist. **Resolved:** - story:dev-execute label added to board item #418 **Still open:** - **Type mismatch persists:** Board item says `type:bug`, issue body still says `### Type: Feature`. Refinement comment declared "updating" but body unchanged. Recommend aligning to `type:feature` on the board item -- the issue body is structured as a Feature (User Story, Context, File Targets, Constraints) and would need full restructuring to match the Bug template. - **Issue body not edited:** Refinement comment #7887 stated three changes (type fix, repo clarification, cleanup criterion) but none were applied to the issue body. A Dev agent reads the issue body, not comments. Needed edits: (a) Checklist: specify PR target is `ldraney/claude-custom`, (b) Acceptance Criteria: add `/tmp/` cleanup criterion, (c) Constraints: note QA agents excluded. Once the board label is aligned and the issue body is updated with the refinement content, this ticket is READY.
Author
Owner

CONSOLIDATED SPEC (supersedes issue body where conflicts exist):

Type

Feature (not Bug — the body is structured as a feature)

PR Targets

  1. Primary PR: ldraney/claude-custom — hook + agent profile changes
  2. SOP updates: pal-e-docs via MCP tools (worktree-workflow, agent-spawn-conventions)
  3. Tracker: this issue stays on pal-e-platform

Additional Acceptance Criterion

  • /tmp/ clones cleaned up after agent completes (cleanup script or convention)

Additional Constraint

  • QA agents are read-only (no Write/Edit/Bash write tools) — cross-repo isolation is Dev-agent-only

Scope (unchanged from body)

  • Update agents/dev.md with cross-repo isolation instructions
  • Update worktree-workflow SOP in pal-e-docs
  • Update agent-spawn-conventions SOP in pal-e-docs
  • Create hooks/cross-repo-isolation.sh PreToolUse hook (or equivalent enforcement)
**CONSOLIDATED SPEC (supersedes issue body where conflicts exist):** ### Type Feature (not Bug — the body is structured as a feature) ### PR Targets 1. **Primary PR:** `ldraney/claude-custom` — hook + agent profile changes 2. **SOP updates:** `pal-e-docs` via MCP tools (worktree-workflow, agent-spawn-conventions) 3. **Tracker:** this issue stays on pal-e-platform ### Additional Acceptance Criterion - [ ] `/tmp/` clones cleaned up after agent completes (cleanup script or convention) ### Additional Constraint - QA agents are read-only (no Write/Edit/Bash write tools) — cross-repo isolation is Dev-agent-only ### Scope (unchanged from body) - Update `agents/dev.md` with cross-repo isolation instructions - Update `worktree-workflow` SOP in pal-e-docs - Update `agent-spawn-conventions` SOP in pal-e-docs - Create `hooks/cross-repo-isolation.sh` PreToolUse hook (or equivalent enforcement)
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-418-2026-03-27
Third review. Prior findings (type mismatch, missing story label) are resolved. Two issues remain:

  • Issue body not updated with refinements: Comment #7900's consolidated spec (PR target, /tmp/ cleanup AC, QA exclusion) was never merged into the issue body. A Dev agent reads the body via API, not comments. The body must be updated.
  • Decomposition needed: 7 acceptance criteria across 3 systems (claude-custom, pal-e-docs, pal-e-platform CLAUDE.md) triggers the 5-minute rule. Recommend splitting into: (1) Dev agent ticket on claude-custom for hook + agent profile (AC 1,2,5,6,7), (2) Dottie ticket for SOP updates (AC 3,4). Keep #188 as umbrella tracker.

Blast radius notes: cleanup-worktrees.sh does not handle /tmp/ clones -- the cleanup mechanism needs to be part of the decomposed Dev ticket scope.

## Scope Review: NEEDS_REFINEMENT Review note: `review-418-2026-03-27` Third review. Prior findings (type mismatch, missing story label) are resolved. Two issues remain: - **Issue body not updated with refinements:** Comment #7900's consolidated spec (PR target, /tmp/ cleanup AC, QA exclusion) was never merged into the issue body. A Dev agent reads the body via API, not comments. The body must be updated. - **Decomposition needed:** 7 acceptance criteria across 3 systems (claude-custom, pal-e-docs, pal-e-platform CLAUDE.md) triggers the 5-minute rule. Recommend splitting into: (1) Dev agent ticket on `claude-custom` for hook + agent profile (AC 1,2,5,6,7), (2) Dottie ticket for SOP updates (AC 3,4). Keep #188 as umbrella tracker. Blast radius notes: `cleanup-worktrees.sh` does not handle `/tmp/` clones -- the cleanup mechanism needs to be part of the decomposed Dev ticket scope.
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-418-2026-03-27-r2
Fourth review (R4). R3's two required actions were NOT completed — issue body still has comment-only refinements and no proper decomposition.

Three actions required before READY:

  • [BODY] Merge comment #7900 refinements into the issue body (PR target clarification, /tmp/ cleanup AC, QA exclusion constraint). Dev agents read the body, not comments. Same finding as R3.
  • [DECOMPOSE] Create child issues for the unique scope of #188. claude-custom#184 covers adjacent gaps (freshness, cleanup) but NOT the cross-repo isolation hook or /tmp/ clone convention. Need: (1) claude-custom issue for cross-repo-isolation.sh + dev.md update, (2) pal-e-docs issue for SOP updates.
  • [LABEL] Change arch:ci-pipeline to arch:worktree on board item #418. Per convention-architecture-ids, ci-pipeline = Woodpecker CI; this work is worktree/hooks domain.
## Scope Review: NEEDS_REFINEMENT Review note: `review-418-2026-03-27-r2` Fourth review (R4). R3's two required actions were NOT completed — issue body still has comment-only refinements and no proper decomposition. Three actions required before READY: - `[BODY]` Merge comment #7900 refinements into the issue body (PR target clarification, /tmp/ cleanup AC, QA exclusion constraint). Dev agents read the body, not comments. Same finding as R3. - `[DECOMPOSE]` Create child issues for the unique scope of #188. `claude-custom#184` covers adjacent gaps (freshness, cleanup) but NOT the cross-repo isolation hook or /tmp/ clone convention. Need: (1) claude-custom issue for `cross-repo-isolation.sh` + `dev.md` update, (2) pal-e-docs issue for SOP updates. - `[LABEL]` Change `arch:ci-pipeline` to `arch:worktree` on board item #418. Per `convention-architecture-ids`, `ci-pipeline` = Woodpecker CI; this work is worktree/hooks domain.
Author
Owner

Issue body refined (Dottie, responding to review-418-2026-03-27-r2 findings):

All three R4 required actions addressed in the body update:

  1. [BODY] Merged refinements from comment #7900:

    • Repo section restructured: tracker (pal-e-platform), primary PR (claude-custom), SOP updates (pal-e-docs)
    • AC #7 added: /tmp/ clone cleanup after agent completes
    • Constraint added: QA agents excluded (read-only, no clobber risk)
    • File Targets section updated with PR target annotation
  2. [DECOMPOSE] Decomposition plan added:

    • Child 1: ldraney/claude-custom — hook + agent profile + cleanup (AC 1,2,5,6,7)
    • Child 2: pal-e-docs SOP updates via Dottie (AC 3,4)
    • Note: claude-custom#184 covers adjacent gaps, no overlap documented
  3. [LABEL] Board label correction documented:

    • Body now specifies arch:worktree (not arch:ci-pipeline)
    • Board item #418 label change needs to be applied separately (Dottie is read-only on Forgejo)

Remaining before READY: Apply arch:worktree label on board item #418, create the 2 child issues.

**Issue body refined** (Dottie, responding to review-418-2026-03-27-r2 findings): All three R4 required actions addressed in the body update: 1. **[BODY] Merged refinements from comment #7900:** - Repo section restructured: tracker (pal-e-platform), primary PR (claude-custom), SOP updates (pal-e-docs) - AC #7 added: `/tmp/` clone cleanup after agent completes - Constraint added: QA agents excluded (read-only, no clobber risk) - File Targets section updated with PR target annotation 2. **[DECOMPOSE] Decomposition plan added:** - Child 1: `ldraney/claude-custom` — hook + agent profile + cleanup (AC 1,2,5,6,7) - Child 2: `pal-e-docs` SOP updates via Dottie (AC 3,4) - Note: `claude-custom#184` covers adjacent gaps, no overlap documented 3. **[LABEL] Board label correction documented:** - Body now specifies `arch:worktree` (not `arch:ci-pipeline`) - Board item #418 label change needs to be applied separately (Dottie is read-only on Forgejo) **Remaining before READY:** Apply `arch:worktree` label on board item #418, create the 2 child issues.
Author
Owner

Decomposition Complete

2 child work items created per the decomposition plan:

# Work Item Repo Scope Covers AC
1 claude-custom#205 claude-custom PreToolUse hook + dev agent profile + /tmp/ cleanup 1, 2, 5, 6, 7
2 Dottie task (no Forgejo issue) pal-e-docs (MCP) Update worktree-workflow SOP + agent-spawn-conventions checklist 3, 4

Child 2 is a Dottie (doc librarian) task — SOP content updates via MCP tools. No Forgejo issue needed; Dottie executes directly against pal-e-docs notes when this parent is picked up.

Child 1 references this parent in Lineage.

## Decomposition Complete 2 child work items created per the decomposition plan: | # | Work Item | Repo | Scope | Covers AC | |---|-----------|------|-------|-----------| | 1 | [`claude-custom#205`](https://forgejo.tail5b443a.ts.net/forgejo_admin/claude-custom/issues/205) | claude-custom | PreToolUse hook + dev agent profile + /tmp/ cleanup | 1, 2, 5, 6, 7 | | 2 | **Dottie task** (no Forgejo issue) | pal-e-docs (MCP) | Update `worktree-workflow` SOP + `agent-spawn-conventions` checklist | 3, 4 | Child 2 is a Dottie (doc librarian) task — SOP content updates via MCP tools. No Forgejo issue needed; Dottie executes directly against pal-e-docs notes when this parent is picked up. Child 1 references this parent in Lineage.
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-418-2026-03-28
Well-scoped umbrella issue after 4 prior review rounds. All template sections present, all file targets verified, decomposition into 2 children is clean. One finding:

  • [LABEL] Board item #418 has arch:ci-pipeline but issue body explicitly corrects to arch:worktree. The label was never updated to match. Fix the label and this is READY.
## Scope Review: NEEDS_REFINEMENT Review note: `review-418-2026-03-28` Well-scoped umbrella issue after 4 prior review rounds. All template sections present, all file targets verified, decomposition into 2 children is clean. One finding: - `[LABEL]` Board item #418 has `arch:ci-pipeline` but issue body explicitly corrects to `arch:worktree`. The label was never updated to match. Fix the label and this is READY.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/pal-e-platform#188
No description provided.