{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=lgoyal6/cache-key-scope@1.1.0","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/lgoyal6/cache-key-scope@1.1.0","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/lgoyal6/cache-key-scope@1.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/cache-key-scope@1.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Answers one question about a codebase: where does it cache a value under a key that does not include everything the value varies by. A key that omits something the value depends on serves one caller's data to another, and it is invisible in testing because you need two different callers to see it. Five shapes are found and ranked by who can see what. Critical, because they cross a trust boundary: a cache write whose value derives from a user, tenant, account, org or session identifier where that identifier is absent from the key; and a response marked Cache-Control public or s-maxage, or a Django cache_page, from a handler that reads an Authorization header, a cookie or a user parameter, with no Vary on it, which leaks through a shared cache rather than in-process. High: a key built from a subset of the parameters that actually influence the value, and a memoisation decorator - lru_cache, cache, cached, memoize, unstable_cache, Cacheable, or a module-level dict - on a function whose result depends on request","distribution":{"digest":"sha256:1843c7763b86bb40c922b67909db54ea2ed491fd97b761c88e883184f37418f0","mediaType":"application/vnd.modiqo.rote-flow","size":40693,"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/lgoyal6/cache-key-scope@1.1.0","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/lgoyal6/cache-key-scope@1.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/lgoyal6/cache-key-scope@1.1.0.json"},"name":"cache-key-scope","owner":{"kind":"user","slug":"lgoyal6"},"parameters":[{"description":"Directory tree whose cache writes and cache keys should be audited","example":".","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":true,"type":"string"},{"default":"8","description":"How many directory levels below root to search for source files","example":"3","input":{"allowCustom":true,"choices":[],"label":"Depth"},"name":"depth","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/lgoyal6/cache-key-scope@1.1.0 --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/lgoyal6/cache-key-scope@1.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/cache-key-scope@1.1.0 <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-04T04:31:28.804932+00:00","reference":"lgoyal6/cache-key-scope@1.1.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["bash","python3","find","grep","xargs","sed","sort","wc","tr","cat","mktemp","rm"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":2,"names":["analyze","discover"]},"title":"cache-key-scope","type":"play","version":"1.1.0","visibility":"public"}