{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=dotisacat/commit-attribution-guard@0.1.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/dotisacat/commit-attribution-guard@0.1.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/dotisacat/commit-attribution-guard@0.1.1","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/dotisacat/commit-attribution-guard@0.1.1 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Scans your recent commit messages for AI-attribution marks you may not have meant to publish -- Co-Authored-By trailers naming an AI tool, \"Generated with/by\" footers, robot-emoji-plus-tool-name body marks -- before that history goes public. Identity hygiene for commit metadata, NOT a repo audit: commit-history scanning (scan_log) reads commit messages only, never code. The one narrow, explicitly-scoped exception is scan_config's attribution-SOURCE check, which does read commit.template/hook file bytes to test them for a structural match -- but returns only a \"class:tool\" pattern identifier, never the source text itself, so no hook or template code line ever leaves this play. Five jobs across two layers: validate_repo resolves the repo path (expanding ~, going absolute) and int-guards depth, treating a real but empty repository as a clean pass rather than a failure; scan_log reads git log for the requested depth and classifies every match into exactly one of two structural shapes -- TRAILER, a Co-Authored-By","distribution":{"digest":"sha256:cbe515fc32b4ca7ec7d540b10478eb8161ceaf506a6e9ddc7f42176b294333e6","mediaType":"application/vnd.modiqo.rote-flow","size":15372,"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/dotisacat/commit-attribution-guard@0.1.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/dotisacat/commit-attribution-guard@0.1.1","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/dotisacat/commit-attribution-guard@0.1.1.json"},"name":"commit-attribution-guard","owner":{"kind":"user","slug":"dotisacat"},"parameters":[{"default":".","description":"Path to the git repository. Steps run in the play workspace, so a relative path resolves somewhere you did not mean — prefer absolute paths.","example":"~/my-project","input":{"allowCustom":true,"choices":[],"label":"Repo"},"name":"repo","required":false,"type":"string"},{"default":50,"description":"How many recent commits to scan (1-1000)","example":50,"input":{"allowCustom":true,"choices":[],"label":"Depth"},"name":"depth","required":false,"type":"integer"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/dotisacat/commit-attribution-guard@0.1.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/dotisacat/commit-attribution-guard@0.1.1","headlessCommandTemplate":"rote play run https://play.modiqo.ai/dotisacat/commit-attribution-guard@0.1.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.77.0"},"publishedAt":"2026-09-02T21:13:41.404903+00:00","reference":"dotisacat/commit-attribution-guard@0.1.1","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":0,"installs":0},"steps":{"count":3,"names":["scan_config","scan_log","validate_repo"]},"title":"commit-attribution-guard","type":"play","version":"0.1.1","visibility":"public"}