Files
msd-core/.changeset/witty-bears-caper.md
Tom Boucher 996196fe02 fix(#4099): stop word-splitting an unquoted PLAN_IDS string (bash vs zsh diverge) (#4102)
* fix(review): stop word-splitting an unquoted PLAN_IDS string (bash vs zsh diverge)

#3301's plan-coverage-manifest block built a space-separated PLAN_IDS
accumulator and re-split it via unquoted `for x in $PLAN_IDS`. Bash
word-splits an unquoted scalar on IFS by default; zsh does not, so every
plan id collapsed onto one iteration under zsh whenever a review had 2+
plans, undercounting the manifest and merging bullets onto one line. This
is exactly what was failing origin/next's CI on every push.

Derive PLAN_COUNT and the bullet list directly from the same *-PLAN.md
glob loop used for copying — glob iteration, unlike re-splitting a stored
string, is identical under bash and zsh, so it never needs word-splitting.

Closes #4099

Emitted-Drift-Ack-Growth: review.md — fix comment documents the bash/zsh word-splitting divergence (gsd-core#4099); net code is smaller, comment expansion grows the file

* docs(#4099): add changeset for the plan-coverage-manifest zsh fix

* docs(#4099): fix changeset body to match the bold-dash-explanation format

Code review (standards axis) flagged the changeset body as not matching
CONTRIBUTING.md's canonical `**<Bold>** — <explanation>.` format — the bold
clause had its own trailing period instead of being followed directly by
the em-dash separator.

* chore(#4099): backfill changeset PR number (#4102)

---------

Co-authored-by: sim <sim@local>
2026-08-31 11:08:22 -04:00

295 B

type, pr
type pr
Fixed 4102

Plan-coverage manifest miscounted multi-plan reviews under zsh — the count and bullet list were derived by re-splitting an unquoted string, which bash word-splits by default but zsh does not, so reviews with 2+ plans collapsed onto one manifest entry. (#4099)