{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=adnandev/dep-drift@0.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/adnandev/dep-drift@0.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/adnandev/dep-drift@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/adnandev/dep-drift@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Finds the dependencies your code imports but never declares, which is how a project that works on your machine fails on a clean install. On a real polyglot repository this found 129 packages imported from source with no entry in any manifest, alongside 21 declared and never imported. Three DAG steps: one reader that parses every package.json, requirements.txt and pyproject.toml, one that parses actual import and require statements across .py, .js, .jsx, .ts, .tsx, .mjs and .cjs, and one join that classifies each dependency as both, never imported, never declared, or build tooling. Standard library, relative imports, sibling modules in the same tree, tsconfig path aliases and framework virtual modules are all excluded, and build tools are separated out rather than counted against you, so the number is conservative by construction. Finding no manifest prints INDETERMINATE instead of a confident zero. Read-only toward your project: it installs nothing, removes nothing, edits no file you already have, makes no ne","distribution":{"digest":"sha256:9a15e9b383a944d6ff9a2ebd1f19f01072c3cd9d27cd76937a523f71a8f4e09a","mediaType":"application/vnd.modiqo.rote-flow","size":19432,"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/adnandev/dep-drift@0.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/adnandev/dep-drift@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/adnandev/dep-drift@0.1.0.json"},"name":"dep-drift","owner":{"kind":"user","slug":"adnandev"},"parameters":[{"default":".","description":"Directory to analyse. Defaults to the current directory. Point it at a repository root, or at a folder of repositories to treat them as one surface.","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":false,"type":"string"},{"default":"20","description":"How many rows to print per section. Never changes a count, only how much of each list is shown.","input":{"allowCustom":true,"choices":[],"label":"Top n"},"name":"top_n","required":false,"type":"string"},{"default":"findings","description":"findings prints the top rows per section. all prints every row. Neither setting changes a count.","input":{"allowCustom":true,"choices":[],"label":"Report"},"name":"report","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/adnandev/dep-drift@0.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/adnandev/dep-drift@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/adnandev/dep-drift@0.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.79.0"},"publishedAt":"2026-09-04T06:13:19.518392+00:00","reference":"adnandev/dep-drift@0.1.0","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":4,"installs":0},"steps":{"count":3,"names":["read_manifests","report_drift","scan_imports"]},"title":"dep-drift","type":"play","version":"0.1.0","visibility":"public"}