rouse-context/scripts
monkopedia-coder 69a826f603
Some checks failed
Android CI / test (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Build & Test (push) Has been cancelled
Upload the Google AAB to Play testing tracks from release.yml (#798)
* Upload the Google AAB to Play testing tracks from release.yml

Play releases were uploaded by hand. Jason set up keyless Workload Identity
Federation for a play-publisher service account limited to testing tracks;
this wires it in.

play-upload.yml (workflow_dispatch + workflow_call) downloads the -google.aab
already attached to a tag's GitHub release -- no rebuild, signing stays in
release.yml -- authenticates via google-github-actions/auth, and runs
scripts/play-upload.sh, which drives the Android Publisher v3 edit directly
with curl: insert, bundles.upload, tracks.update, validate, then commit, or
on a dry run (the default for manual runs) list tracks and delete the edit.
Any failure deletes the edit and prints the HTTP status and body. Production,
FOSS artifacts and bundles whose manifest package is not com.rousecontext are
refused before any request.

release.yml gains a play-upload job (tag pushes only, after build) calling
it with track alpha, dry_run false. The build job is untouched.

scripts/tests/play-upload-test.sh runs the script against a mock Publisher
server and is wired into ci.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYSPuh9bZEJkrzvnEpY1QK

* Address review on #798: push-only Play job, fail-closed dry run

- release.yml: the play-upload job now also requires
  github.event_name == 'push'. A manual dispatch of release.yml on a tag
  ref satisfies startsWith(github.ref, 'refs/tags/v') and DOES re-run
  "Create GitHub Release"; it must not also commit to Play. Comment
  corrected to say so.
- play-upload.sh: --dry-run takes a value and commits only on exactly
  `false`; omitted, empty, True, FALSE, 0, typos are all dry runs. The
  workflow passes inputs.dry_run through verbatim.
- aab_manifest.py: bounds-check 64- and 32-bit fixed fields.
- Harness: fail-closed cases (11 values + omitted + missing value) and
  truncated fixed-field cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYSPuh9bZEJkrzvnEpY1QK

---------

Co-authored-by: Monkopedia <monkopedia@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 17:50:18 -04:00
..
lib Upload the Google AAB to Play testing tracks from release.yml (#798) 2026-10-19 17:50:18 -04:00
tests Upload the Google AAB to Play testing tracks from release.yml (#798) 2026-10-19 17:50:18 -04:00
backfill-relay-secrets.sh Make a partial secret backfill fail loudly instead of exiting 0 (#686) (#693) 2026-09-02 23:23:12 -04:00
cancellation-catch-allowlist.tsv Gate: a broad catch must be preceded by a cancellation clause (#674) (#720) 2026-09-03 06:59:24 -04:00
cancellation-catch-backlog.tsv Stop abandoned bridge sessions from pinning IO threads (#778) (#781) 2026-10-19 10:06:18 -04:00
check-apk-distribution.sh Triage the masked-return findings and enable the two checks (#657) (#682) 2026-09-02 13:59:17 -04:00
check-cancellation-catch-order.sh Gate: a broad catch must be preceded by a cancellation clause (#674) (#720) 2026-09-03 06:59:24 -04:00
check-gate-selftests.sh Give the two untested CI gates a self-test, and mechanise the rule (#705) (#759) 2026-09-15 00:20:07 -04:00
check-no-manual-json.sh Share one anchoring helper across the grep gates (#597) (#697) 2026-09-03 00:31:25 -04:00
check-no-production-runblocking.sh Share one anchoring helper across the grep gates (#597) (#697) 2026-09-03 00:31:25 -04:00
check-no-sensitive-logging.sh Convert the sensitive-logging gate to the shared gate-filters helper (#696) (#704) 2026-09-03 01:27:54 -04:00
check-roborazzi-coverage.sh ci: verify the Roborazzi goldens, and prove the check can go red (#628) (#629) 2026-08-28 08:01:25 -04:00
check-roborazzi-step-order.sh Make the step-order gate report an unreadable jobs: block (#678) (#694) 2026-09-03 00:03:17 -04:00
check-shell-lint.sh Triage the masked-return findings and enable the two checks (#657) (#682) 2026-09-02 13:59:17 -04:00
check-zombie-screens.sh Triage the masked-return findings and enable the two checks (#657) (#682) 2026-09-02 13:59:17 -04:00
play-upload.sh Upload the Google AAB to Play testing tracks from release.yml (#798) 2026-10-19 17:50:18 -04:00
production-source-dirs.sh Triage the masked-return findings and enable the two checks (#657) (#682) 2026-09-02 13:59:17 -04:00