Omit an empty placements list, as every other path does
Commit

The new native --json set placements unconditionally, so a repo
nothing holds answered "placements":[] while a GitHub candidate — the
same answer — omitted the key, because repoDirRow tags it omitempty. Two
shapes for one fact, chosen by which code path built the JSON, under a
doc comment claiming the common core parses the same either way.
There is no third state for the key to carry, so matching the existing contract loses nothing.
The shape had no test, which is how this shipped a day after consistency was the whole argument for introducing it. There is one now, covering both halves: the four spec-guaranteed fields the row shape used to drop, and the omission.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com Entire-Checkpoint: 01M3PEE0ASJ8TY26P83MYXEYQD