Skip to content

feat(add-orchestrator): install-time divergence detection (--check + overwrite-prompt wiring) (#8) - #13

Merged
vybe merged 1 commit into
mainfrom
fix/8-install-divergence-check
Aug 17, 2026
Merged

feat(add-orchestrator): install-time divergence detection (--check + overwrite-prompt wiring) (#8)#13
vybe merged 1 commit into
mainfrom
fix/8-install-divergence-check

Conversation

@vybe

@vybe vybe commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Closes #8 (add-orchestrator-scoped version; framework-wide follow-up is #12).

(Supersedes PR #11, which was auto-closed when its branch was rebuilt — the original branch had accidentally been stacked on a stray #5 commit from a prior aborted run, pulling sync-fleet-to-head.md into the diff. This branch is rebased clean onto main: exactly the two files below.)

Problem

Re-running /add-orchestrator offered overwrite / skip / cancel per skill with no version comparison, no diff, and no detection that a local copy was customized. Two real failures this week:

What this adds

A read-only --check mode on /add-orchestrator that, per installed runtime skill, reports the three states — and wires the same comparison into Step 4's overwrite prompt so the warning arrives at the moment of decision, not after:

State Verdict Meaning
installed < bundled WARN upgrade available
installed > bundled FAIL back-port candidate — installed copy is ahead of the bundle; overwrite = silent downgrade (the signal #5 went weeks without)
installed == bundled, content differs WARN local customization — diff surfaced before overwrite
installed == bundled, identical PASS in sync

Reported in the canon-doctor PASS/WARN/FAIL shape with a one-line fleet-readable verdict (orchestrators dispatch it fleet-wide and read only that line). Version compare is numeric-per-component (1.9 < 1.13), tested against all four states end-to-end.

Deliberately left out (minimal scope, per Eugene's ruling)

  • The plugin-framework-wide version — every plugin that copies skills into agent repos has this same gap, but that is a larger framework-surface call. Filed as Plugin-framework-wide install-time divergence detection (generalize #8's --check beyond add-orchestrator) #12; this PR is add-orchestrator-only.
  • No new on-disk state / skill-registry inventory — the check is stateless: the bundle is the reference, the installed copy is the subject, compared live.
  • No cross-version historical diff — the bundle only carries the current template, so a clean local-customization diff is only possible at equal version; the behind case leads with the version gap. Documented as a caveat rather than built around.

Overlap with PR #9 (issue #7) — still OPEN, not yet merged

#9 also bumps this skill and agent-dev/plugin.json. To avoid a version collision I skip 1.21 / 1.14.1 (reserved for #9): add-orchestrator 1.20 -> 1.22, agent-dev plugin 1.14.0 -> 1.14.2. Whichever merges second will hit a mechanical conflict on the SKILL.md frontmatter (changelog prepend) and plugin.json version line — both trivial to reconcile. No template files touched here, so #9's body changes don't overlap.

Files changed: plugins/agent-dev/skills/add-orchestrator/SKILL.md, plugins/agent-dev/.claude-plugin/plugin.json.

🤖 Generated with Claude Code

…ode + overwrite-prompt wiring (#8)

Re-running /add-orchestrator offered overwrite/skip/cancel per skill with no
version comparison, no diff, and no detection of local customization. Two real
failures came from that: a hand-written routing directive that a plain overwrite
would have silently destroyed, and two skills sitting ahead of the bundle for
weeks with nothing comparing the two directions (#5).

Add a read-only `--check` mode that, per installed runtime skill, reports the
three states — installed < bundled (upgrade available), installed > bundled
(back-port candidate), installed == bundled but content differs (local
customization) — in the canon-doctor PASS/WARN/FAIL shape with a one-line
fleet-readable verdict. Step 4's per-skill overwrite prompt calls the same
comparison, so the warning arrives at the moment of decision, not after.

Deliberately scoped to add-orchestrator's own bundle and stateless (no new
on-disk registry). Plugin-framework-wide version filed as a follow-up.

add-orchestrator 1.20 -> 1.22 (skips 1.21, reserved for open PR #9); agent-dev
plugin 1.14.0 -> 1.14.2 (skips 1.14.1, reserved for #9).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vybe
vybe force-pushed the fix/8-install-divergence-check branch from 0a4ebe2 to c3340e8 Compare August 17, 2026 14:13
@vybe
vybe merged commit 1b93e0c into main Aug 17, 2026
@vybe
vybe deleted the fix/8-install-divergence-check branch August 17, 2026 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Install path has no upgrade/divergence detection — add a --check/doctor mode (likely plugin-framework level)

1 participant