From 0095fec219cbf3399cac4029a2d1da6265d8599e Mon Sep 17 00:00:00 2001 From: Sinabina Date: Fri, 24 Jul 2026 09:29:39 -0700 Subject: [PATCH 1/3] =?UTF-8?q?fix(gstack2):=20session=20suffices=20for=20?= =?UTF-8?q?upload=20=E2=80=94=20no=20app-specific=20password=20demands?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restores the guarantee lost in the v1.64.7.0 rewrite, adds attempt- first rule, folds review contact info into the authorization moment. Co-Authored-By: Claude Fable 5 --- scripts/gstack2/generate-skill-tree.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/gstack2/generate-skill-tree.ts b/scripts/gstack2/generate-skill-tree.ts index ceb223ee23..45fb40544f 100644 --- a/scripts/gstack2/generate-skill-tree.ts +++ b/scripts/gstack2/generate-skill-tree.ts @@ -674,6 +674,8 @@ Build this question's options from a LIVE check of installed skills at ask time 1. Archive and export the signed Release build with \`gym\` (it drives xcodebuild and the signing minted in preflight). Projects with custom archive requirements may drop to \`xcodebuild archive\` directly; the output either way is an App Store-signed \`.ipa\`. 2. The upload is an external effect: run \`pilot\` (TestFlight) or \`deliver\` (App Store) through the durable state wrapper with a key like \`appstore.upload..\`. Never re-upload on ambiguity; inspect App Store Connect for the build first. 3. The cached session is an env-level credential: never argv, never echoed, never committed. +4. NEVER demand an app-specific password. Per fastlane's documented authentication, the cached spaceauth session ALONE suffices for binary upload through \`deliver\`/\`pilot\`; \`FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD\` is an alternative for environments without a session, not a requirement on top of one. Attempt the session upload FIRST; only an actual authentication error from a real upload attempt may open a fallback conversation, and "Apple requires an app-specific password on 2FA accounts" stated without that error in hand is a contract violation. +5. App Review contact details (name, email, phone) are required metadata for submission: infer name and email from the signed-in Apple ID and git config, collect the phone number once inside the authorization moment, persist it to the decision store, and never re-ask. Contact details are metadata, not a blocking gate to announce mid-run. ## Storefront completion From 718f8b5e9fbd0ddab9699a19c5b8b538c7327830 Mon Sep 17 00:00:00 2001 From: Sinabina Date: Fri, 24 Jul 2026 09:29:39 -0700 Subject: [PATCH 2/3] chore(gstack2): regenerate Apple release adapter Co-Authored-By: Claude Fable 5 --- skills/ship/references/APPLE-RELEASE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/skills/ship/references/APPLE-RELEASE.md b/skills/ship/references/APPLE-RELEASE.md index dcbef492fe..d5d7add1f4 100644 --- a/skills/ship/references/APPLE-RELEASE.md +++ b/skills/ship/references/APPLE-RELEASE.md @@ -37,6 +37,8 @@ Build this question's options from a LIVE check of installed skills at ask time 1. Archive and export the signed Release build with `gym` (it drives xcodebuild and the signing minted in preflight). Projects with custom archive requirements may drop to `xcodebuild archive` directly; the output either way is an App Store-signed `.ipa`. 2. The upload is an external effect: run `pilot` (TestFlight) or `deliver` (App Store) through the durable state wrapper with a key like `appstore.upload..`. Never re-upload on ambiguity; inspect App Store Connect for the build first. 3. The cached session is an env-level credential: never argv, never echoed, never committed. +4. NEVER demand an app-specific password. Per fastlane's documented authentication, the cached spaceauth session ALONE suffices for binary upload through `deliver`/`pilot`; `FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD` is an alternative for environments without a session, not a requirement on top of one. Attempt the session upload FIRST; only an actual authentication error from a real upload attempt may open a fallback conversation, and "Apple requires an app-specific password on 2FA accounts" stated without that error in hand is a contract violation. +5. App Review contact details (name, email, phone) are required metadata for submission: infer name and email from the signed-in Apple ID and git config, collect the phone number once inside the authorization moment, persist it to the decision store, and never re-ask. Contact details are metadata, not a blocking gate to announce mid-run. ## Storefront completion From cd294508b14c503456ab2d95a48c9118c65eef96 Mon Sep 17 00:00:00 2001 From: Sinabina Date: Fri, 24 Jul 2026 09:29:39 -0700 Subject: [PATCH 3/3] docs: CHANGELOG + VERSION 1.64.13.0 Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 12 ++++++++++++ VERSION | 2 +- package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b90e3de814..4b054f4479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ > completion state and remaining P0 gates. No version bump or release claim is > made here while that status holds. +## [1.64.13.0] - 2026-07-24 + +**The session is enough. Demanding an app-specific password is a bug.** + +A release run stopped to demand an app-specific password "because Apple requires it for uploading on 2FA accounts." Per fastlane's own documentation that is false: the cached spaceauth session alone uploads binaries through deliver and pilot; the app-specific password is an alternative for sessionless environments, not a requirement. The adapter now says so explicitly again (the sentence was lost in the v1.64.7.0 rewrite), and adds an attempt-first rule: only a real authentication error from a real upload attempt may open any credential fallback conversation. App Review contact details also stop being a mid-run roadblock — collected once inside the authorization moment, persisted, never re-asked. + +### Itemized changes + +### Changed + +- `references/APPLE-RELEASE.md` (ship tree): restored the session-suffices-for-upload guarantee with an attempt-first rule (preemptive app-specific-password demands are a named violation); App Review contact info folded into the authorization moment and the decision store. + ## [1.64.12.0] - 2026-07-24 **The screenshots question is built from a live skill check, not memory.** diff --git a/VERSION b/VERSION index 1babd6f5a3..4db9fa1e43 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.64.12.0 +1.64.13.0 diff --git a/package.json b/package.json index 79a6a7afd9..543ad0e0b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.64.12.0", + "version": "1.64.13.0", "description": "GStack 2 \u2014 six portable Agent Skills with an optional host-neutral runtime.", "license": "MIT", "type": "module",