{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=aryangorde/review-gate@0.1.12","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/aryangorde/review-gate@0.1.12","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/aryangorde/review-gate@0.1.12","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/aryangorde/review-gate@0.1.12 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Decides whether a pull request is safe to merge, and says exactly what is blocking it. \u0060gh pr view\u0060 and every check built on GitHub REST v3 share one blind spot: review-thread resolution (\u0060isResolved\u0060) exists only in the GraphQL API, so a pull request carrying unresolved blocking feedback reports as ready. On grafana/grafana#131909 that gap hid a High-severity finding, an unclamped \u0060toFixed\u0060 that throws, behind zero failing checks and no merge conflicts. This play reads threads through GraphQL and checks through \u0060gh pr view\u0060, naming each unresolved thread with file, line, author and permalink. It degrades honestly, never optimistically: pending checks never count toward a pass, uncomputed mergeability is reported as unknown, over 100 threads makes the count a lower bound, and a pull request nobody has reviewed is reported as unreviewed rather than as safe. The verdict can fall to cannot-confirm, but never to safe. Read-only, no API key beyond gh, and cheap enough to run before every merge.","distribution":{"digest":"sha256:97bdffc92b4884ead0a1123ab2a962fb7b0fea17568bb066050c3ec30bd4cd0f","mediaType":"application/vnd.modiqo.rote-flow","size":10731,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/aryangorde/review-gate@0.1.12","inputPolicy":{"optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/aryangorde/review-gate@0.1.12","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/aryangorde/review-gate@0.1.12.json"},"name":"review-gate","owner":{"kind":"user","slug":"aryangorde"},"parameters":[{"description":"Pull request URL or owner/repo#number, for example grafana/grafana#131909","example":"https://github.com/grafana/grafana/pull/131909","input":{"allowCustom":true,"choices":[],"label":"Pr"},"name":"pr","required":true,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/aryangorde/review-gate@0.1.12 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/aryangorde/review-gate@0.1.12","headlessCommandTemplate":"rote play run https://play.modiqo.ai/aryangorde/review-gate@0.1.12 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.78.0"},"publishedAt":"2026-09-04T15:18:54.546672+00:00","reference":"aryangorde/review-gate@0.1.12","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["gh","sh","sed"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":3,"names":["merge_checks","normalize","review_threads"]},"title":"review-gate","type":"play","version":"0.1.12","visibility":"public"}