{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajkaria/streak@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/rajkaria/streak@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/rajkaria/streak@0.1.1","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajkaria/streak@0.1.1 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"\u0060did=water\u0060. One word, several times a day, and the Play keeps the only part of habit tracking that ever changes anyone's behaviour: how long the run is, and which day you keep dropping it. Each habit gets its current streak, its longest ever, a grid of the last twenty-one days, and — once there is enough history to say it honestly — the weekday you miss most often. Marking the same habit twice in one day is one day; the log keeps both marks, the streak counts the day. Today not being marked yet does not end your streak. The day is not over, and a tracker that resets at midnight punishes you for checking it in the morning. - Reads: only its own log, at \u0060state_dir/streak.jsonl\u0060. Nothing else on the machine. - Never reads: any credential, keychain or token file. This Play needs no account and has no login step. - Never sends: \u0060micro_core\u0060 imports no \u0060urllib\u0060, \u0060http\u0060, \u0060socket\u0060 or \u0060subprocess\u0060, asserted by a test on every commit. - Writes: one appended line to \u0060~/.rote-micro/streak.jsonl\u0060 (or wherever you point \u0060","distribution":{"digest":"sha256:840874288b207abf003f0f5f22cdc2f378785b963e404c60a3928193d36d9455","mediaType":"application/vnd.modiqo.rote-flow","size":45156,"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/rajkaria/streak@0.1.1","inputPolicy":{"omittedValues":"inspect_full_parameters_before_collecting_values_or_consent","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/rajkaria/streak@0.1.1","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajkaria/streak@0.1.1.json"},"name":"streak","owner":{"kind":"user","slug":"rajkaria"},"parameters":[{"default":"","description":"The habit you are marking, one word. Leave it empty to read the streaks back without marking anything.","example":"water","input":{"allowCustom":true,"choices":[],"label":"Did"},"name":"did","required":false,"type":"string"},{"default":"~/.rote-micro","description":"The one directory this Play writes to. One append-only JSONL file per stream; nothing is ever deleted or rewritten in place.","example":"~/.rote-micro","input":{"allowCustom":true,"choices":[],"label":"State dir"},"name":"state_dir","required":false,"type":"string"},{"default":21,"description":"How many days the grid shows, and the window the missed-weekday reading is taken over.","example":21,"input":{"allowCustom":true,"choices":[],"label":"Window"},"name":"window","required":false,"type":"integer"},{"default":"","description":"Empty uses the machine's zone. A day boundary is a place, not a fact: this decides when today starts.","example":"Asia/Kolkata","input":{"allowCustom":true,"choices":[],"label":"Tz"},"name":"tz","required":false,"type":"string"},{"default":"false","description":"true runs the whole Play against bundled synthetic input, so a first run needs nothing configured and touches nothing of yours.","example":"false","input":{"allowCustom":true,"choices":[],"label":"Demo"},"name":"demo","required":false,"type":"string"},{"default":"","description":"Empty reads the real clock. An ISO-8601 instant makes the run reproducible, which is how the tests and the demo produce the same bytes on every machine.","example":"2026-09-05T14:22:03Z","input":{"allowCustom":true,"choices":[],"label":"Now"},"name":"now","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/streak@0.1.1 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters","whenValuesOmitted":"Run step 1 before collecting inputs or showing defaults; omittedFields are unknown values, not absent defaults or exhaustive choices."},{"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/rajkaria/streak@0.1.1","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajkaria/streak@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.80.0"},"publishedAt":"2026-09-05T17:50:09.571302+00:00","reference":"rajkaria/streak@0.1.1","requested":"rajkaria/streak","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"hostToolRequirements":[{"command":"python3","required":true,"versionRequirement":null}],"localTools":["python3"],"roteCli":{"minimumVersion":"0.91.0"},"sessions":false},"resolution":"latest","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":2,"names":["record","report"]},"title":"streak","type":"play","version":"0.1.1","visibility":"public"}