Skip to content

fix(harness-ops): label and fail no-op project updates in linked worktrees - #8053

Merged
kyle-sexton merged 7 commits into
mainfrom
work-resolve-issue/issue-6713-39100510326-1
Oct 20, 2026
Merged

kyle-sexton merged 7 commits into
mainfrom
work-resolve-issue/issue-6713-39100510326-1

Conversation

@melodic-automation-lanes

Copy link
Copy Markdown
Contributor

Closes #6713

Summary

Opened by the work-resolve-issue lane. The run's own summary:

fleet-state.sh now detects linked-worktree project records and labels lagging ones update ineffective; uninstall clears it, keeping them in the divergence count. sync reports an 'already at the latest version' update whose project record is still below the catalog as a failed row, and converge marks linked-worktree rows update has no effect here and counts an unmoved re-read as a failure.

Not verified

  • The worktree rule in converge.md is prose for the model; converge has no script, so it is not covered by a test. The scripted parts (label, no-op failure) are.
  • No local review-venue.txt existed, so the review ran as a fresh-context subagent; the subagent could not run the tests itself and read the code only.
  • CI's check-skills on the PR was left to CI.

Fix

  • plugins/harness-ops/skills/plugins/scripts/fleet-state.sh: linkedWorktree (a .git file pointing into worktrees/) and label on installed[] and divergences[].scopes[]
  • plugins/harness-ops/skills/plugins/scripts/fleet-state.test.sh: linked worktree, main checkout and submodule fixtures; label and divergence-count assertions
  • plugins/harness-ops/skills/plugins/scripts/sync-run.sh: a no-op update on a project record below the catalog is a failed row
  • plugins/harness-ops/skills/plugins/scripts/sync-run.test.sh: no-op update classified as failure; a record at the catalog stays a no-op
  • plugins/harness-ops/skills/plugins/context/converge.md: linked-worktree rule, unmoved re-read is a failure
  • plugins/harness-ops/skills/plugins/context/sync.md: no-op re-read failure documented
  • plugins/harness-ops/skills/plugins/context/scope-semantics.md: linked-worktree no-op record with recheck trigger
  • .changes/harness-ops/fix-plugins-worktree-update-noop-6713a1c4.md: patch fragment

Verification

The run reports:

  • run-test-file fleet-state.test.sh: 94 cases, 0 failed
  • run-test-file sync-run.test.sh: exit 0, no FAIL lines
  • run-test-file cache-content-check.test.sh: 26 cases, 0 failed
  • check-changelog-fragments: all 141 fragments valid
  • check-skill plugins/harness-ops/skills plugins: PASS, 0 errors, 3 pre-existing warnings (SKILL.md untouched)
  • fresh-context subagent review of the diff: no findings
  • The lane run: https://github.com/melodic-software/claude-code-plugins/actions/runs/39100510326

Left out: the items under Not verified.

Related

#6713

…trees

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Comment thread plugins/harness-ops/skills/plugins/context/converge.md Outdated
Comment thread plugins/harness-ops/skills/plugins/scripts/fleet-state.sh Outdated
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

claude-review reviewed a93f4a76a9578423d6087c320d8a91c8344d6f32: 0 finding(s), 0 as inline comments.

No findings. I reviewed only the incremental change since 88796f5, which touches plugins/harness-ops/skills/plugins/scripts/sync-run.test.sh.

The change adds two lines to the "already at the latest version" no-op case: it creates main/.git/worktrees/wt and writes a commondir file (../..) into it.

  • Why it is needed: fleet-state.sh (around lines 1010–1034) only marks a project as a linked worktree when the .git file points into worktrees/<name> and that git dir holds a commondir file. The earlier fixture wrote only the gitdir: line. Without the commondir file the project would not be marked as a linked worktree, and the update ineffective; uninstall clears it assertion at line 868 would have failed.
  • Path handling: the gitdir: target is an absolute path ($case_dir/main/.git/worktrees/wt), so the [[ -f "$pp_gd/commondir" ]] check in fleet-state.sh resolves to the file the fixture creates.
  • Fixture hygiene: the fixture matches the real layout git writes. It adds no shared state beyond $case_dir.

I read the code and compared it to the fixture. I did not run the tests, and the PR's verification claims are author-claimed and unverified by me.

Closing issue #6713: this increment touches no acceptance criterion directly. It only repairs the fixture the no-op failure test depends on.

@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

Unattended merge: risk MED at head 3fa16f669cc3acbabb80664659550288ff048302. Only LOW merges without a human; this pull request waits for one.

MED evidence-unbound:claude-security-review: not bound: run-not-success
MED findings:claude-review: 2 open

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

claude-security-review reviewed a93f4a76a9578423d6087c320d8a91c8344d6f32: 0 finding(s), 0 as inline comments.

No security findings.

The incremental change since 88796f5 is two lines in plugins/harness-ops/skills/plugins/scripts/sync-run.test.sh. They add a worktrees/wt directory and a commondir file to a linked-worktree test fixture. Both are created under the test's own $case_dir, and the content is a constant (../..). Nothing in the change touches input handling, authorization, secrets, or any instruction surface, and it deletes or softens no standing rule. This stops at the skip gate: the diff has no security-relevant surface.

…-worktree gitdir match

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

pr-unblock / address-feedback finished round 1 of 3 on 484becf.

Comment thread plugins/harness-ops/skills/plugins/scripts/fleet-state.sh Outdated
…d .git

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

pr-unblock / address-feedback finished round 2 of 3 on 45e40b3.

Comment thread plugins/harness-ops/skills/plugins/scripts/fleet-state.sh Outdated
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

pr-unblock / address-feedback finished round 3 of 3 on 45e40b3.

@melodic-automation-lanes melodic-automation-lanes Bot added the needs-human Human-in-the-loop required; autonomous sessions must not resolve items carrying this. label Oct 18, 2026
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

The pr-unblock lane stopped on this pull request and needs a person: a review finding is uncertain or deferred, so a person decides it.

  • Reason: feedback-uncertain
  • Resume key: 45e40b32887fd79b7aeec6c7ee7913980e731809 (the head the lane stopped on)

To resume, deal with the reason above, remove the needs-human label (and do-not-merge, if set), then dispatch the pr-unblock workflow with pr-number=8053 and activity=address-feedback:

gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=8053 -f activity=address-feedback

…sue-6713-39100510326-1

# Conflicts:
#	plugins/harness-ops/skills/plugins/scripts/sync-run.sh
Comment thread plugins/harness-ops/skills/plugins/context/scope-semantics.md Outdated
kyle-sexton and others added 2 commits October 19, 2026 13:33
…ted CLI figures

A gitdir under a worktrees/ parent also matched a separate-git-dir main
checkout; the git dir must now hold the commondir file git writes only
into a linked worktree's admin directory. Fixtures cover a .bare layout
and the separate-git-dir stay-quiet case.

The linked-worktree paragraph and its converge and sync echoes state our
decision in our own words and point at the #6713 probe comment with an
as-of date and recheck trigger, instead of restating CLI output and counts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread plugins/harness-ops/skills/plugins/scripts/sync-run.test.sh
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

pr-unblock / address-feedback finished round 4 of 3 on 88796f5.

@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

The pr-unblock lane stopped on this pull request and needs a person: a review finding is uncertain or deferred, so a person decides it.

  • Reason: feedback-uncertain
  • Resume key: 88796f51b094784262881a2ae9a1de7756aa403b (the head the lane stopped on)

To resume, deal with the reason above, remove the needs-human label (and do-not-merge, if set), then dispatch the pr-unblock workflow with pr-number=8053 and activity=address-feedback:

gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=8053 -f activity=address-feedback

linkedWorktree now requires the commondir file git writes into a
linked worktree's admin directory, so the sync-run fixture whose
.git points at main/.git/worktrees/wt lost its uninstall label.
The fixture now creates that admin directory with commondir.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 20, 2026
Merged via the queue into main with commit 295db88 Oct 20, 2026
26 checks passed
@kyle-sexton
kyle-sexton deleted the work-resolve-issue/issue-6713-39100510326-1 branch October 20, 2026 05:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-human Human-in-the-loop required; autonomous sessions must not resolve items carrying this.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(harness-ops): plugins sync and converge cannot clear stale project-scope pins the CLI treats as current

1 participant