{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=manju-builds/keep-my-notes@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/manju-builds/keep-my-notes@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/manju-builds/keep-my-notes@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/manju-builds/keep-my-notes@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Keep My Notes When I Re-export merges a fresh CSV export with a previous annotated copy by exact stable-ID string. Fresh platform values win; only explicitly named manual columns carry forward, new rows receive blank manual fields, missing rows are archived separately, and changed matched rows include old/new platform evidence for review. Inputs are read-only and proved unchanged. After every refusal preflight passes, the Play uses one run-owned staging directory beside output_dir, creates output_dir if absent, and exclusively creates refreshed.csv, missing-from-fresh.csv, needs-review.csv, and refresh-receipt.json without overwriting existing paths. It reopens and verifies every output before reporting VERIFIED, removes temporary state on terminal paths, and bounds post-commit rollback to unchanged files created by that run. Canonical JSON is complete; the one-line summary is intentionally lossy.","distribution":{"digest":"sha256:faf0450ae44b6b80576f956a8ba7c1b53422a0e862889b6b3ffab69e93032062","mediaType":"application/vnd.modiqo.rote-flow","size":20365,"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/manju-builds/keep-my-notes@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/manju-builds/keep-my-notes@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/manju-builds/keep-my-notes@0.1.0.json"},"name":"keep-my-notes","owner":{"kind":"user","slug":"manju-builds"},"parameters":[{"description":"Path to the previous annotated UTF-8 CSV. Opened read-only and proved unchanged.","input":{"allowCustom":true,"choices":[],"label":"Previous csv"},"name":"previous_csv","required":true,"type":"string"},{"description":"Path to the fresh platform UTF-8 CSV export. Opened read-only and proved unchanged.","input":{"allowCustom":true,"choices":[],"label":"Fresh csv"},"name":"fresh_csv","required":true,"type":"string"},{"description":"Exact stable-ID column in both files. Decoded CSV strings are compared exactly: '001' differs from '1', 'A' differs from 'a', and 'A' differs from 'A '. No trimming, case folding, guessing, fuzzy matching, or type coercion.","input":{"allowCustom":true,"choices":[],"label":"Key column"},"name":"key_column","required":true,"type":"string"},{"description":"Exact CSV-formatted comma-separated list of human-owned column names, for example owner,notes,decision; names are not trimmed. Every name must exist in previous_csv, none may exist in fresh_csv, and key_column may not be included.","input":{"allowCustom":true,"choices":[],"label":"Manual columns"},"name":"manual_columns","required":true,"type":"string"},{"description":"Destination directory, created at commit if absent. After preflight, the Play stages beside it and exclusively creates refreshed.csv, missing-from-fresh.csv, needs-review.csv, and refresh-receipt.json; existing paths are never overwritten and run-owned temporary state is removed on terminal paths.","input":{"allowCustom":true,"choices":[],"label":"Output dir"},"name":"output_dir","required":true,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/manju-builds/keep-my-notes@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/manju-builds/keep-my-notes@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/manju-builds/keep-my-notes@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.78.0"},"publishedAt":"2026-09-02T11:49:33.650553+00:00","reference":"manju-builds/keep-my-notes@0.1.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":11,"names":["analyze_exact_join","commit_outputs","preflight_outputs","render_result","resolve_inputs","snapshot_inputs","validate_fresh","validate_previous","verify_final_outputs_and_inputs","verify_staged_outputs","write_staged_outputs"]},"title":"keep-my-notes","type":"play","version":"0.1.0","visibility":"public"}