{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajkaria/kept@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/rajkaria/kept@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/rajkaria/kept@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajkaria/kept@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Every other number a coding agent produces is about what it cost. This one is about what it was worth: of everything the agent wrote for you, how much of it is still in the file. Git already knows the answer and nobody asks it. It reads two things. The session transcripts your agents already keep — Claude Code, Codex and Pi — for the file-writing tool calls and the times they happened, and nothing else in them: no prompt, no reply, no model name, no content. Then, in the repositories under a root you choose, one fixed read-only \u0060git\u0060 command line for the commits and the blame that say what became of those lines. The whole Play rests on one heuristic, and because the heuristic is arguable it is printed verbatim on the report rather than buried. Git records who *committed* a line, never who *typed* it, so a line is called the agent's when the commit that introduced it has an author time inside a session window — from the first file-writing call in that session to the last, plus a grace period. That miscounts in","distribution":{"digest":"sha256:21349174965a140b8687b3a75247692a17f4ec6562f1ada66d7c53d114e8ce87","mediaType":"application/vnd.modiqo.rote-flow","size":1023394,"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/kept@0.1.0","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/kept@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajkaria/kept@0.1.0.json"},"name":"kept","owner":{"kind":"user","slug":"rajkaria"},"parameters":[{"default":"~/daily","description":"Created if missing. Everything this Play writes goes here and nowhere else.","example":"~/daily","input":{"allowCustom":true,"choices":[],"label":"Out dir"},"name":"out_dir","required":false,"type":"string"},{"default":"false","description":"true runs the whole Play against a bundled synthetic transcript set and two synthetic repositories, so a first run needs nothing installed and no account.","example":"false","input":{"allowCustom":true,"choices":[],"label":"Demo"},"name":"demo","required":false,"type":"string"},{"default":"~","description":"Every git repository under this folder is blamed for the lines the transcripts say an agent wrote. Nothing outside it is opened.","example":"~/Projects","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":false,"type":"string"},{"default":"~/.claude/projects","description":"Where Claude Code keeps its session transcripts. Only the file-write records in them are read.","example":"~/.claude/projects","input":{"allowCustom":true,"choices":[],"label":"Claude dir"},"name":"claude_dir","required":false,"type":"string"},{"default":"~/.codex/sessions","description":"Where Codex keeps its session transcripts. Missing is an expected absence, not an error.","example":"~/.codex/sessions","input":{"allowCustom":true,"choices":[],"label":"Codex dir"},"name":"codex_dir","required":false,"type":"string"},{"default":"~/.pi/sessions","description":"Where Pi keeps its session transcripts. Missing is an expected absence, not an error.","example":"~/.pi/sessions","input":{"allowCustom":true,"choices":[],"label":"Pi dir"},"name":"pi_dir","required":false,"type":"string"},{"default":200,"description":"Stop after this many repositories. The card says when the bound was reached.","example":200,"input":{"allowCustom":true,"choices":[],"label":"Max repos"},"name":"max_repos","required":false,"type":"integer"},{"default":30,"description":"How long after an agent wrote a file a commit may still be credited to that write. Beyond this the lines are treated as yours.","example":30,"input":{"allowCustom":true,"choices":[],"label":"Grace minutes"},"name":"grace_minutes","required":false,"type":"integer"},{"default":20,"description":"Writes smaller than this are left out of the survival rate: a two-line edit tells you nothing and moves the percentage a lot.","example":20,"input":{"allowCustom":true,"choices":[],"label":"Min lines"},"name":"min_lines","required":false,"type":"integer"},{"default":300,"description":"The most files to run blame over. Blame is the slow half of this Play, so this is the knob that decides how long it takes.","example":300,"input":{"allowCustom":true,"choices":[],"label":"Max blame files"},"name":"max_blame_files","required":false,"type":"integer"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/kept@0.1.0 --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/kept@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajkaria/kept@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-05T20:40:22.888758+00:00","reference":"rajkaria/kept@0.1.0","requested":"rajkaria/kept","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":3,"names":["read_agent","read_git","report"]},"title":"kept","type":"play","version":"0.1.0","visibility":"public"}