Marketplace sync: keep installs the host could not build (final review M3)
Secret Scan / scan (push) Successful in 6s
Build App (Preview) / compute-version (pull_request) Successful in 5s
Secret Scan / scan (pull_request) Successful in 6s
Build App (Preview) / create-release (pull_request) Successful in 2s
Build App (Preview) / build-macos (pull_request) Successful in 3m49s
Build App (Preview) / test (pull_request) Successful in 5m37s
Build App (Preview) / build-windows (pull_request) Successful in 7m20s
Build App (Preview) / build-linux (pull_request) Successful in 8m7s
Build App (Preview) / prune-previews (pull_request) Successful in 1s

An install the host skipped (pinned commit missing from the cache, cache
unreadable, item failing a tightened validation rule) never reached the
manifest, so sync.sh treated it as deselected and deleted it from the
container. The manifest now carries `held`: the state ids of such
installs ("plugin:<slug>/<key>" for plugins). The script counts them as
still selected and carries their records forward, as it already does
for items that fail inside the container. A removed marketplace is the
one skip that still removes; a malformed `held` list changes nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-27 10:16:27 -07:00
co-authored by Claude Opus 5.5
parent 5829c42f0f
commit f2bb092586
4 changed files with 155 additions and 11 deletions
@@ -233,7 +233,8 @@ in existing projects. Plugin commands additionally run under `flock /tmp/.triple
agents/<file> skills/<dir>/… commands/<file> hooks/<dir>/…
plugins/.claude-plugin/marketplace.json # generated: only selected plugins
plugins/<plugin>/… # each at its own pin
manifest.json # effective set: kind, key, marketplace, commit, hook JSON
manifest.json # effective set: kind, key, marketplace, commit, hook JSON;
# `held`: ids the host could not build this time (kept as is)
```
uploaded to `~/.claude/triple-c/marketplace/incoming/` together with the sync script itself and