merge origin/main (cross-store text checker); macOS platform pitfall renumbered to 79

This commit is contained in:
CRTkafa 2026-10-20 03:06:16 +07:00
commit 9db7180eb9
35 changed files with 618 additions and 60 deletions

View file

@ -763,7 +763,8 @@ that fails without the fix (see CONTRIBUTING.md).
bundleIdCapabilities answers, lag, a write that never sticks).
## 66. `storebound api apple ... --body f.json --yes` only dry-ran from an agent
- **Do:** expected: writes through `storebound api` are sent only from an interactive terminal, by design. Use the
- **Do:** expected: writes through `storebound api` are sent only from an interactive terminal, by design (since
pitfall 78 it is a loud refusal with exit 1, not a dry run). Use the
dedicated command the message names (bundle id capabilities: `apple signing ensure`; IAPs: `apple iap`; listing:
`apple listing`, ...), which runs anywhere with its own dry run and read-back.
- **Guard:** `dedicatedCommand` (cli/api/gate.ts), `tests/signing-capabilities.test.ts`.
@ -941,7 +942,30 @@ that fails without the fix (see CONTRIBUTING.md).
re-run, still processing, rejected / archived files, add-for-review without submitting, verify read-only with the
waiting state, a refused live placement, the validate finding).
## 77. A macOS (tvOS, visionOS) version was invisible next to the iOS one
## 77. What's New shared with Play rejected on the App Store (2.3.10)
- **Symptom:** a Mac App Store version was rejected under Guideline 2.3.10 (Accurate Metadata): its What's New came
from release notes shared with Google Play and had "Google Play Games" and "Android" lines. storebound wrote it
without a word (the old check was a warning in the editor only).
- **Cause:** one notes source for both stores, no per-store split, and no write that refused other platforms. Google
Play's Metadata policy is the mirror case (iOS, iPhone, App Store, Game Center, TestFlight in Play text).
- **Do:** tag store-specific lines `[play]` / `[apple]` in shared notes (whats-new skill); `storebound check` must
show no `other platform` line. A functional mention (a "Continue with Google" / "Sign in with Apple" button) is the
owner's call: `listing.allowPlatformMentions: [{ store, text, reason }]`. Never add an entry yourself.
- **Guard:** `cli/lib/cross-store.ts` (term lists, per locale / field / line, the allowlist, `notesForStore`).
Refused before anything is sent, dry runs included: `apple listing`, `play listing`, `play release` /
`play upload` (release notes), `listing set`, `whats-new check` / `apply`, the desktop editor and `storebound edit`
(`appleLocaleIssues` / `playLangIssues` errors). `check` / `validate` blockers (`other-platforms`), `scan` rules
`other-platforms` (2.3.10) and `play-other-platforms` (Play: Metadata). `tests/cross-store.test.ts`.
## 78. `storebound api ... --yes` piped or redirected became a silent dry run
- **Symptom:** `storebound api apple <write> --yes | tail` (or `> out.json`) printed a dry run and exited 0; the
owner thought it was sent. Happened twice.
- **Cause:** writes need an interactive terminal; without one the gate fell back to a dry run.
- **Do:** run writes without a pipe or redirect in a terminal, or use the dedicated storebound command.
- **Guard:** `decide` in `cli/api/gate.ts` refuses (`NOT_A_TTY`): exit 1, the message on stderr, nothing sent, the
dedicated command named. Without `--yes` a write is still a plain dry run. `tests/api.test.ts`.
## 79. A macOS (tvOS, visionOS) version was invisible next to the iOS one
- **Symptom:** `apple resubmit` said "nothing to resubmit" while a macOS version was REJECTED with an
UNRESOLVED_ISSUES submission; `apple listing --version 0.8.7` refused because the iOS 0.8.7 was live, although the
macOS 0.8.7 was the rejected one to fix; `apple status` listed versions without saying which platform.
@ -954,4 +978,3 @@ that fails without the fix (see CONTRIBUTING.md).
every version; validate and release status warn about another platform's editable or rejected version.
- **Guard:** `cli/apple/platform.ts` (`pickPlatform`, `parsePlatform`), `tests/apple-platforms.test.ts` (fake App Store
Connect: iOS 0.8.7 live, macOS 0.8.7 rejected in UNRESOLVED_ISSUES).