{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajdeepkushwaha/test-theater@0.4.1","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/rajdeepkushwaha/test-theater@0.4.1","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/rajdeepkushwaha/test-theater@0.4.1","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajdeepkushwaha/test-theater@0.4.1 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Read-only ast audit of a Python test suite, joined with git history. CANNOT_FAIL marks tests that provably cannot fail - every assertion is on literals, or every assertion sits inside a try that swallows it. NO_VALUE_CHECK marks tests with no assertion anywhere. WEAK marks permanently-skipped and duplicate-body tests. Everything else stays NOT_ANALYZED, because a test is never labelled good. Resolves assertions delegated to same-file helper functions, ignores functions merely nested inside a test (route handlers, CLI commands), and treats mock assert_called_with as a real assertion, so a suite is not libelled for asserting somewhere the parser did not look first. Recognises pytest assert, unittest self.assert*, and async tests. Every finding carries the commit and age of the line that introduced it; a shallow clone reports as such rather than giving every line one meaningless date. Pass base_ref such as origin/main to get a per-pull-request gate - findings are then split NEW_IN_BRANCH from PREEXISTING and onl","distribution":{"digest":"sha256:c30b530a5b165178cf41711fc9ad5ae6048eaafe0c0c00a98d92ddfade49a1ff","mediaType":"application/vnd.modiqo.rote-flow","size":8968,"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/rajdeepkushwaha/test-theater@0.4.1","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/rajdeepkushwaha/test-theater@0.4.1","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajdeepkushwaha/test-theater@0.4.1.json"},"name":"test-theater","owner":{"kind":"user","slug":"rajdeepkushwaha"},"parameters":[{"description":"Absolute path to a Python test file or a directory to walk recursively for test_*.py files","input":{"allowCustom":true,"choices":[],"label":"Target"},"name":"target","required":true,"type":"string"},{"description":"Optional git ref such as origin/main. When set, findings are split NEW_IN_BRANCH from PREEXISTING and only what this branch introduced is listed.","input":{"allowCustom":true,"choices":[],"label":"Base ref"},"name":"base_ref","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajdeepkushwaha/test-theater@0.4.1 --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/rajdeepkushwaha/test-theater@0.4.1","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajdeepkushwaha/test-theater@0.4.1 <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-02T11:57:14.972696+00:00","reference":"rajdeepkushwaha/test-theater@0.4.1","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":2,"names":["audit","git_dates"]},"title":"test-theater","type":"play","version":"0.4.1","visibility":"public"}