{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=lgoyal6/schema-drift@1.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/schema-drift@1.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/schema-drift@1.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/schema-drift@1.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Answers one question about a codebase: where do the ORM model and the migration history disagree about the same table? They are two descriptions of one schema, written by different people at different times, and they drift. The application then queries a column the database does not have - a run-time error on the query path, not at startup, so a test suite that mocks the database never sees it - or the database carries a column nothing reads. Both directions are reported. Seven tiers are separated because they break in seven different ways: a model field no migration ever creates, which is a live query error; a NOT NULL the model thinks is nullable, which fails on INSERT rather than SELECT and is the most common production surprise; a type disagreement, model integer against migration text; a length disagreement, a string field with no length against a varchar(n); a unique=True or @@unique with no matching unique index, which means the invariant is enforced by application code alone and two concurrent writers","distribution":{"digest":"sha256:efd6462056c76983b672a08d5c26fe33ec9e94fd2467eb8f9b2fcf764355d1ec","mediaType":"application/vnd.modiqo.rote-flow","size":42660,"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/schema-drift@1.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/schema-drift@1.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/lgoyal6/schema-drift@1.1.0.json"},"name":"schema-drift","owner":{"kind":"user","slug":"lgoyal6"},"parameters":[{"description":"Absolute path to the tree whose ORM models and migration history should be compared; a relative path is refused, because the step runs in the rote workspace rather than in your shell's directory","example":"/Users/you/project","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":true,"type":"string"},{"default":"6","description":"How many directory levels below root to search for models and migrations","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/schema-drift@1.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/schema-drift@1.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/lgoyal6/schema-drift@1.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-04T04:32:50.614649+00:00","reference":"lgoyal6/schema-drift@1.1.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["bash","python3","find","grep","sort","wc","tr","cat","mktemp","rm"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":3,"names":["analyze","discover","verify"]},"title":"schema-drift","type":"play","version":"1.1.0","visibility":"public"}