chore: merge master - #845
Merged
Merged
Conversation
Vibed but seems to work.
…s, and basic scripts. (#737)
The problem here is that the game name is actually `repeated_game` and IPD is a variant of that. I think we can't rename `repeated_game` since that's tied to the `open_spiel` name ([see comment](#694 (comment))) So I moved IPD to be a visualizer under `/repeated_game`, similar to how `v2` and `default` live under `/chess`
) Key differences found with offical rule book: - Passing: Guessers can currently pass without making any guesses. Official rules require at least 1 guess before passing. - Clue Validation: The environment accepts any string as a clue, even if it's a substring of an unrevealed word on the board. - Special Clues: "0" and "Unlimited" clues are not supported to grant unlimited guesses. - Starting Team: Red team always starts and always has 9 words. Official rules randomize this. **NOTE**: If invalid word is guessed, opposing team will be allowed to reveal 1 of their own words at random. Official rule allows the opposing team to pick the word of their choosing which can be the next iteration. Also in the next iteration I will try to implement these valid clue boundaries https://filemanager.czechgames.com/storage/files/codenames/rules/CN%20rulebook%20EN%2030.pdf#page=6
We should probably rethink this whole manifest.json thing sometime - but need this now for the WIP stuff from Stink to show up in the selector drop-down.
Automated: Migrate {target_path} from gsutil to gcloud storage
This CL is part of the on going effort to migrate from the legacy
`gsutil` tool to the new and improved `gcloud storage` command-line
interface.
`gcloud storage` is the recommended and modern tool for interacting with
Google Cloud Storage, offering better performance, unified
authentication, and a more consistent command structure with other
`gcloud` components. 🚀
### Automation Details
This change was **generated automatically** by an agent that targets
users of `gsutil`.
The transformations applied are based on the [gsutil to gcloud storage
migration guide](http://go/gsutil-gcloud-storage-migration-guide).
### ⚠️ Action Required: Please Review and Test Carefully
While we have based the automation on the migration guide, every use
case is unique.
**It is crucial that you thoroughly test these changes in environments
appropriate to your use-case before merging.**
Be aware of potential differences between `gsutil` and `gcloud storage`
that could impact your workflows.
For instance, the structure of command output may have changed,
requiring updates to any scripts that parse it. Similarly, command
behavior can differ subtly; the `gcloud storage rsync` command has a
different file deletion logic than `gsutil rsync`, which could lead to
unintended file deletions.
Our migration guides can help guide you through a list of mappings and
some notable differences between the two tools.
Standard presubmit tests are run as part of this CL's workflow. **If you
need to target an additional test workflow or require assistance with
testing, please let us know.**
Please verify that all your Cloud Storage operations continue to work as
expected to avoid any potential disruptions in production.
### Support and Collaboration
The `GCS CLI` team is here to help! If you encounter any issues, have a
complex use case that this automated change doesn't cover, or face any
other blockers, please don't hesitate to reach out.
We are happy to work with you to test and adjust these changes as
needed.
**Contact:** `gcs-cli-hyd@google.com`
We appreciate your partnership in this important migration effort!
#gsutil-migration
Following advice on this thread: https://chat.google.com/room/AAQAUUA20GU/Dc-La-JFJdU/Dc-La-JFJdU?cls=10 Any way to validate before merging?
...and fix the background color on avatars because it was bothering me for Grok
No logical changes - just moving stuff around. The only thing this would break is if we update kaggleazure to use a new version of kaggle-environments, but I have sibling PR about to go up to remove the import. I think there is some debate about if each version of a game visualizer (e.g. chess default and chess v2) should use the same transformer or not - I just duplicated them for now, but we may want to revisit that. cc @jim-at-stink - once this is merged you will need to also move the go transformer to your directory.
My bad - this refactor I dropped the custom overrides for poker. This should fix it.
…ment (#802) Currently, visualizer discovery relies on a global manifest.json generated from master's source tree. This creates problems when games like Go have active development on long-lived branches: the manifest needs the variant to exist on master for discovery, but master's deploy then overwrites the branch-deployed assets. The SKIP_GAMES env var works around this but lives in CI trigger config, is invisible to reviewers, and requires manual coordination. This change introduces two mechanisms to fix this: 1. web/config/branch-owned.json - a checked-in config declaring which game/visualizer variants are owned by non-master branches (e.g., "open_spiel_go/v2": "go-v2/main"). The collect-artifacts and validate-manifest scripts read this to skip branch-owned variants during master builds, replacing the SKIP_GAMES env var. 2. web/scripts/merge-game-indexes.py - writes per-game index.json files to GCS (e.g., episode-visualizers/open_spiel_go/index.json containing ["default", "v2"]). Uses a union merge so that visualizers deployed by different branches coexist in the index without stomping each other. The main pipeline runs this after deploy as a new step. Together these allow the consumer (kaggleazure) to eventually switch from fetching one global manifest to fetching a per-game index, which any branch can contribute to independently. This is the first P.R. of three - this won't change any prod behavior but will let me validate that the game-specific manifests are generating correctly.
Currently each game dev branch (go-v2/main, chess-v2/main, etc.) needs a bespoke Cloud Build trigger manually configured with four substitution variables. This doesn't scale and is easy to misconfigure. This adds a single generic trigger that reads branch-owned.json from master to determine which visualizers the current branch owns, then builds and deploys only those. A branch cannot modify its own permissions since the config is always fetched from the trusted master branch via git fetch. To register a new branch, add one line to branch-owned.json on master via PR, then set up a single Cloud Build trigger pointing to cloudbuild-branch-visualizer.yaml with no substitution variables needed. New files: - plan-branch-deploy.js: discovers owned visualizers, builds them, stages artifacts (runs in node container) - deploy-branch-visualizers.py: deploys staged artifacts to GCS and updates per-game index.json files (runs in gcloud container) - cloudbuild-branch-visualizer.yaml: two-step pipeline config I'll verify it all works as expeceted.
See chat for discussion of how this impacts accessibility quality for controlling Go settings
Quick follow up based on Pim's super helpful feedback!
Example result: <img width="3456" height="1916" alt="image" src="https://github.com/user-attachments/assets/d5af7e6b-3839-474a-ae67-30fdf14bc00a" /> This is OpenSpiel specific but could be referenced or adapted into a new skill for whipping up a visualizer after a harness has already been created for a new game (which I think is closer to what @c-h-i-a-m-a-k-a wants) cc @jhtschultz this is what I want to talk about tomorrow!
The core of the issue here was a stale value in callbacks done by `scheduleNextStep` cc @jim-at-stink
jim-at-stink
marked this pull request as ready for review
March 25, 2026 13:42
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Domino has fixed the speed drop down in the playback controls above the LLM log viewer. Merging
masterto get this change into ourgo-v2branch.