{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=lgoyal6/notification-blackhole@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/lgoyal6/notification-blackhole@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/lgoyal6/notification-blackhole@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/notification-blackhole@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"A job that ran is not a person who was told. Answers one question about THIS machine: for every notification SINK its recurring automations declare, is there any evidence that a message ever actually arrived? The hook is a real failure this play was built from - an hourly launchd agent whose exit code was 0 on all 82 runs launchd had counted, whose stderr held nothing but \u0060dial tcp: lookup discord.com: no such host\u0060, and whose Discord digest therefore reached nobody while every counter on the machine said healthy. Sinks are found by READING configuration and code: Discord, Slack, Teams, Telegram, ntfy, Pushover and PagerDuty webhooks and bot tokens referenced by NAME in launchd plists, the user crontab, the shell scripts those jobs actually run, GitHub Actions workflows, n8n workflow exports and .env-style files; mail senders (mail(1), sendmail, msmtp, SMTP host settings, send-mail actions); desktop notifiers (osascript display notification, terminal-notifier, UserNotifications, notify-send); and cron's two f","distribution":{"digest":"sha256:dd5607d9eed0de5274725e9a2dfb8f4ee4ec56ee1e3c4e8b72fd9f619b7ec846","mediaType":"application/vnd.modiqo.rote-flow","size":55096,"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/notification-blackhole@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/lgoyal6/notification-blackhole@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/lgoyal6/notification-blackhole@0.1.0.json"},"name":"notification-blackhole","owner":{"kind":"user","slug":"lgoyal6"},"parameters":[{"description":"ABSOLUTE path to search for repositories, workflow files, n8n exports and .env-style files. A relative path is REFUSED with exit 2, because a process.exec step runs in rote's own workspace rather than your shell directory and a relative root would silently scan that workspace and report a confident clean.","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 and configuration files","example":"3","input":{"allowCustom":true,"choices":[],"label":"Depth"},"name":"depth","required":false,"type":"string"},{"default":"3","description":"How many scheduled runs may pass with nothing appended to a log before an UNDATED delivery failure in it is treated as history rather than as a sink failing now","example":"3","input":{"allowCustom":true,"choices":[],"label":"Quiet runs"},"name":"quiet_runs","required":false,"type":"string"},{"default":"7","description":"How old the newest DATED delivery failure may be and still count as current","example":"7","input":{"allowCustom":true,"choices":[],"label":"Stale days"},"name":"stale_days","required":false,"type":"string"},{"default":"2000000","description":"How many bytes of the tail of each log to read when looking for delivery evidence","example":"2000000","input":{"allowCustom":true,"choices":[],"label":"Max log bytes"},"name":"max_log_bytes","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/lgoyal6/notification-blackhole@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/lgoyal6/notification-blackhole@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/notification-blackhole@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-04T08:33:35.902294+00:00","reference":"lgoyal6/notification-blackhole@0.1.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"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":3,"installs":0},"steps":{"count":3,"names":["analyze","discover","verify"]},"title":"notification-blackhole","type":"play","version":"0.1.0","visibility":"public"}