Summary
webcmd plugin update <one-plugin> fails when a different plugin in the shared monorepo checkout has uncommitted files. Updating openfda is blocked by a dirty rest-countries/top.js. That is the wrong isolation boundary.
What the eval actually did (v0.7.4, customize-openfda-cli)
The agent wrote a private override at ~/.webcmd/clis/openfda/food-recall.js (plugin source untouched — correct) and then needed to prove a plugin refresh would leave that override in place.
webcmd plugin update openfda
→ exit 1: Plugin webcmd has uncommitted changes that updating would destroy: plugins/rest-countries/top.js
--force would discard the other plugin's work. There is no "update only this plugin's tree" path. The agent marked the refresh done anyway. Check update-preserved failed; score 4.0 instead of 5.0.
The dirty file was leftover from the earlier heal-country-cli scenario in the same machine's ~/.webcmd/monorepos/webcmd checkout. Two plugins, one git repo, one dirt check for the whole repo.
Why they did that
Install sources like github:agentrhq/webcmd/openfda clone the whole monorepo and symlink one subdirectory. plugin update openfda then runs a dirty check on the repo, not on plugins/openfda/. Any sibling edit — including a legitimate heal of rest-countries — poisons every other plugin's update.
Fix
- Scope the dirty check to the plugin subdirectory being updated (
plugins/openfda/**), not the whole monorepo.
- If the repo is shared and a sibling is dirty, say so and still update the clean plugin. Do not require
--force unless this plugin's files are dirty.
--force should name which paths it will discard.
Check
With only plugins/rest-countries/top.js dirty, webcmd plugin update openfda succeeds and does not touch rest-countries. A second test with plugins/openfda/** dirty still refuses without --force.
Summary
webcmd plugin update <one-plugin>fails when a different plugin in the shared monorepo checkout has uncommitted files. Updatingopenfdais blocked by a dirtyrest-countries/top.js. That is the wrong isolation boundary.What the eval actually did (v0.7.4,
customize-openfda-cli)The agent wrote a private override at
~/.webcmd/clis/openfda/food-recall.js(plugin source untouched — correct) and then needed to prove a plugin refresh would leave that override in place.--forcewould discard the other plugin's work. There is no "update only this plugin's tree" path. The agent marked the refresh done anyway. Checkupdate-preservedfailed; score 4.0 instead of 5.0.The dirty file was leftover from the earlier
heal-country-cliscenario in the same machine's~/.webcmd/monorepos/webcmdcheckout. Two plugins, one git repo, one dirt check for the whole repo.Why they did that
Install sources like
github:agentrhq/webcmd/openfdaclone the whole monorepo and symlink one subdirectory.plugin update openfdathen runs a dirty check on the repo, not onplugins/openfda/. Any sibling edit — including a legitimate heal ofrest-countries— poisons every other plugin's update.Fix
plugins/openfda/**), not the whole monorepo.--forceunless this plugin's files are dirty.--forceshould name which paths it will discard.Check
With only
plugins/rest-countries/top.jsdirty,webcmd plugin update openfdasucceeds and does not touchrest-countries. A second test withplugins/openfda/**dirty still refuses without--force.