{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=lgoyal6/timezone-hazards@1.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/timezone-hazards@1.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/timezone-hazards@1.2.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/timezone-hazards@1.2.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Answers one question about a codebase: where does it handle time in a way that will be wrong for someone, somewhere? Timezone bugs do not fail in CI - they fail in October when the clocks change, or for one user in Auckland, or for the one report that lands on the wrong day. Finds a NAIVE datetime compared with or subtracted from an AWARE one, which raises TypeError in Python and is therefore a latent crash rather than a style issue; \u0060datetime.utcnow()\u0060 and \u0060datetime.utcfromtimestamp()\u0060, which return a naive datetime that merely happens to hold UTC and are deprecated in 3.12; a timestamp column with no timezone, in SQL DDL (\u0060TIMESTAMP\u0060, \u0060timestamp without time zone\u0060, MySQL \u0060DATETIME\u0060), SQLAlchemy (\u0060DateTime\u0060 without \u0060timezone=True\u0060), Prisma (a bare \u0060DateTime\u0060) and Drizzle or knex (\u0060timestamp()\u0060 without \u0060withTimezone\u0060); date arithmetic that assumes a fixed day length - \u0060timedelta(days=1)\u0060, 86400, \u0060Add(24 * time.Hour)\u0060, \u0060+ 86400000\u0060 - where a calendar day is meant; a calendar date derived from a timestamp with","distribution":{"digest":"sha256:df8fe75d2f972d14f080669e28b408d020d09aef8b570822dc8e7913dfa74b3e","mediaType":"application/vnd.modiqo.rote-flow","size":32816,"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/timezone-hazards@1.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/timezone-hazards@1.2.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/lgoyal6/timezone-hazards@1.2.0.json"},"name":"timezone-hazards","owner":{"kind":"user","slug":"lgoyal6"},"parameters":[{"description":"Directory tree whose date and time handling should be audited","example":".","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":true,"type":"string"},{"default":"8","description":"How many directory levels below root to search for source and schema files","example":"3","input":{"allowCustom":true,"choices":[],"label":"Depth"},"name":"depth","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/lgoyal6/timezone-hazards@1.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/timezone-hazards@1.2.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/timezone-hazards@1.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.78.0"},"publishedAt":"2026-09-04T04:33:13.53293+00:00","reference":"lgoyal6/timezone-hazards@1.2.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["bash","python3","find","grep","xargs","sort","tr","wc","cat","sed","mktemp","rm"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":2,"names":["analyze","discover"]},"title":"timezone-hazards","type":"play","version":"1.2.0","visibility":"public"}