Commit graph

2 commits

Author SHA1 Message Date
ebd0a9c617 docs(migration): brace ${key} in run-operator-window — bash 5.3 absorbed the ellipsis byte into the var name under set -u
The pilot died at line 93 with 'key<byte>: unbound variable': $key glued to
the U+2026 ellipsis let bash 5.3.9 read the multibyte byte as part of the name.
Braced to ${key}…; proven on /usr/local/bin/bash (repro + fixed form + bash -n).
Nothing was mutated on Forgejo — it failed before the [b] repo-create POST.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 05:49:47 +02:00
b6aa815e41 docs(migration): fix run-operator-window DS special-casing (2 BLOCKER, steps d+e)
Review of the rollout script found 2 deterministic blockers on target #2,
playground-design-system — a shared component, not a marketplace plugin:

- step (d): DS has no .claude-plugin/plugin.json (it ships tokens.css/base.css/
  schemas). The plugin.json assertion would die. Now DS-aware: assert tokens.css
  for DS_KEY, plugin.json otherwise.
- step (e): 60-rewrite --only playground-design-system errors (--only name not in
  marketplace.json) since DS has no catalog entry. New entry_present() gate skips
  the flip when the key has no marketplace entry, mirroring 60-rewrite --all
  (which only touches the 10 real plugins).

Net: pilot + 9 plugins flip (count_local to 0); DS is stood up as a repo but
never flipped. Verified: bash -n OK, entry_present + 60-rewrite behaviour tested.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:32:11 +02:00