{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=adnandev/rule-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/rule-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/rule-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/rule-drift@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Finds every commit that changed the rules your AI agent follows, and reports whether that change was ever reviewable on its own. On the repository this was built on, 8 of 8 rule changes were bundled into a commit that also changed code, the largest touching 50 files at once, so no reviewer ever saw the rule change by itself. Three DAG steps: one reader that finds tracked agent-governing files (CLAUDE.md, AGENTS.md, .cursorrules, copilot- instructions.md, .mdc rules, and anything under .claude, .cursor/rules, .github/instructions, .agents or .codex), one that walks git history for every commit touching them and re-reads each commit's full file list, and one join that splits those commits into bundled versus changed-alone and ranks them by blast radius. Bundling is reported as a review property, never as wrongdoing. A path outside a git work tree prints INDETERMINATE, and a repository with no rule files says so plainly instead of returning a confident zero. Read-only toward your repository: it checks out nothin","distribution":{"digest":"sha256:c8b0c00aaf211ed8d81f7abd6311e5180a3a3a2c6c9c393829a5dc5413293ffb","mediaType":"application/vnd.modiqo.rote-flow","size":13308,"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/rule-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/rule-drift@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/adnandev/rule-drift@0.1.0.json"},"name":"rule-drift","owner":{"kind":"user","slug":"adnandev"},"parameters":[{"default":".","description":"Repository to analyse. Defaults to the current directory. Must be inside a git work tree; anything else prints INDETERMINATE rather than an empty result.","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":false,"type":"string"},{"default":"0","description":"Cap on how many rule commits to walk, newest first. 0 means the whole history. Use a cap only on very large repositories; it changes coverage, so the counts move with it.","input":{"allowCustom":true,"choices":[],"label":"Max commits"},"name":"max_commits","required":false,"type":"string"},{"default":"15","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 bundled commit. 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/rule-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/rule-drift@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/adnandev/rule-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-04T09:12:27.837235+00:00","reference":"adnandev/rule-drift@0.1.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3","git"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":3,"installs":0},"steps":{"count":3,"names":["find_rule_files","report_lineage","trace_commits"]},"title":"rule-drift","type":"play","version":"0.1.0","visibility":"public"}