{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=lgoyal6/automation-reality@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/automation-reality@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/automation-reality@0.2.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/automation-reality@0.2.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"A scheduled job that exits 0 is not a job that worked. Answers one question about THIS machine: for every recurring automation on it, is the work still actually happening, and did its output land? Reconciles the DECLARED schedule against OBSERVED reality across launchd (StartInterval and StartCalendarInterval in ~/Library/LaunchAgents, cross-checked against launchctl's own loaded state, run counter and last exit code), the user crontab, and GitHub Actions workflows carrying a schedule: trigger in the repositories on this disk. Observation comes from the jobs' own output: arrival times are recovered from the timestamps INSIDE each log, clustered so that fifty lines from one run count as one run, and the median gap between arrivals is compared against the declared interval. Ranks by consequence rather than by scheduler: an automation that has silently stopped is CRITICAL, because the person believes it is running; a scheduled workflow in a repository of yours with no commit for 60 days is HIGH, because GitHub d","distribution":{"digest":"sha256:1a708f20eaf3922f46e889052b5dcc247b772d94ef1e38125d8b212f677a265a","mediaType":"application/vnd.modiqo.rote-flow","size":56203,"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/automation-reality@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/automation-reality@0.2.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/lgoyal6/automation-reality@0.2.0.json"},"name":"automation-reality","owner":{"kind":"user","slug":"lgoyal6"},"parameters":[{"description":"ABSOLUTE path to search for git repositories with scheduled GitHub Actions workflows. A relative path is refused, because a step runs in rote's own workspace rather than your shell directory and would scan the wrong tree.","example":"/Users/you","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":true,"type":"string"},{"default":"3","description":"How many directory levels below root to search for repositories","example":"3","input":{"allowCustom":true,"choices":[],"label":"Depth"},"name":"depth","required":false,"type":"string"},{"default":"3","description":"How many declared intervals may pass with no observed run before the automation is called stopped","example":"3","input":{"allowCustom":true,"choices":[],"label":"Stale factor"},"name":"stale_factor","required":false,"type":"string"},{"default":"2.5","description":"How far the observed median gap may differ from the declared interval, in either direction, before it is a mismatch","example":"2.5","input":{"allowCustom":true,"choices":[],"label":"Mismatch factor"},"name":"mismatch_factor","required":false,"type":"string"},{"default":"60","description":"Days without a commit that make a repository eligible for GitHub's silent auto-disable of scheduled workflows","example":"60","input":{"allowCustom":true,"choices":[],"label":"Stale repo days"},"name":"stale_repo_days","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/lgoyal6/automation-reality@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/automation-reality@0.2.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/automation-reality@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-04T09:00:58.794402+00:00","reference":"lgoyal6/automation-reality@0.2.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3","bash","find","grep","sed","sort","wc","tr","cat","head","mktemp","rm","date","id","launchctl","plutil","crontab","git"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":3,"names":["analyze","discover","verify"]},"title":"automation-reality","type":"play","version":"0.2.0","visibility":"public"}