{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=lgoyal6/llm-spend-guard@0.2.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/llm-spend-guard@0.2.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/llm-spend-guard@0.2.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/llm-spend-guard@0.2.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Where a context-overflow scanner asks whether a prompt will exceed the window, this asks whether anything bounds what a call sends or spends, so an unbounded read, a call inside an unbounded loop, a missing max_tokens, an uncapped retry and a missing timeout are the findings, and history growth is reported as cost and overflow separately because they have different fixes. It reports token-shaped facts and deliberately refuses to print a cost estimate, because pricing tier, model version and cache hit rate are invisible to static reading. Answers one question about a repository: which model calls have no bound on what they send or what they spend. An LLM call whose input size is not bounded by anything is a bill with no ceiling, and it fails in production on the one document that is bigger than every document it was tested with. Seven shapes are looked for, graded by unbounded-ness rather than by guessed cost. Critical: a whole file, a whole result set or a whole directory read reaching a prompt with no slice,","distribution":{"digest":"sha256:e0d43776d35e3c65ba927dfc0c023636a9064f74b418f4995797a006fa87b2d0","mediaType":"application/vnd.modiqo.rote-flow","size":45588,"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/llm-spend-guard@0.2.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/llm-spend-guard@0.2.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/lgoyal6/llm-spend-guard@0.2.0.json"},"name":"llm-spend-guard","owner":{"kind":"user","slug":"lgoyal6"},"parameters":[{"description":"Directory tree whose model calls should be audited for unbounded input, unbounded loops, missing output caps, uncapped retries and missing timeouts","example":".","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":true,"type":"string"},{"default":"6","description":"How many directory levels below root to search for source files that call a model","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/llm-spend-guard@0.2.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/llm-spend-guard@0.2.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/llm-spend-guard@0.2.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.79.0"},"publishedAt":"2026-09-04T04:32:04.018692+00:00","reference":"lgoyal6/llm-spend-guard@0.2.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["bash","python3","find","grep","sed","wc","tr","cat","mktemp","rm"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":4,"names":["analyze","collect","discover","verify"]},"title":"llm-spend-guard","type":"play","version":"0.2.0","visibility":"public"}