{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=chinmoy/os-portability@0.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/chinmoy/os-portability@0.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/chinmoy/os-portability@0.2.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/chinmoy/os-portability@0.2.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Reads a repository's tracked files out of the git index and reports what breaks when a teammate checks it out on a different operating system. 7 independent probes cover paths that differ only by case, Windows reserved names and illegal characters, CRLF and mixed line endings, shebang scripts missing the executable bit, tracked symlinks, absolute host paths such as /Users/you or C:\\ left in source, decomposed NFD and zero-width filenames, and whether .gitattributes already covers the extensions present. The verdict classifies every finding as breaks-checkout, breaks-run or cosmetic for linux, macos and windows separately. It reports UNKNOWN rather than a pass when the target is not a git work tree, has no commits and nothing staged, when a probe cannot report, and when no file was examined at all - a pass over zero coverage is never printed. It never flags CRLF that .gitattributes declares, never flags .bat files or binaries, never reads comments, and it does not build, run or test anything, use the network,","distribution":{"digest":"sha256:2c77b6b3fe7e1f5d90b983109ea23f6acff4557332e985cb6719a5e4d1c7eb30","mediaType":"application/vnd.modiqo.rote-flow","size":52299,"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/chinmoy/os-portability@0.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/chinmoy/os-portability@0.2.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/chinmoy/os-portability@0.2.0.json"},"name":"os-portability","owner":{"kind":"user","slug":"chinmoy"},"parameters":[{"default":".","description":"Work tree to inspect. The default '.' resolves to the directory the run started in, so a zero-argument run checks the repository you are standing in; pass an absolute path to check a checkout somewhere else. Only the git index is read, never the working tree, because a Windows checkout with core.autocrlf=true shows CRLF on disk for files that are pure LF in the index.","input":{"allowCustom":true,"choices":[],"label":"Path"},"name":"path","required":false,"type":"string"},{"default":"all","description":"Which operating systems the findings are judged against: all, or any comma-separated subset of linux, macos and windows. The default all is what makes a zero-argument run useful, since the whole point is the OS you do not have; narrow it to linux when only CI has to survive the repository and a Windows reserved name is nobody's problem.","input":{"allowCustom":true,"choices":[],"label":"Target os"},"name":"target_os","required":false,"type":"string"},{"default":"all","description":"Which findings reach the report: all, or critical. The default all keeps the warnings, because a tracked symlink or a long path is exactly the kind of thing that wastes an afternoon without ever producing an error message; use critical for the list that hard-stops a checkout or a run.","input":{"allowCustom":true,"choices":[],"label":"Severity"},"name":"severity","required":false,"type":"string"},{"default":260,"description":"Length above which a tracked path is reported as too long for Windows. The default 260 is the classic Win32 limit, and it is measured against the repository-relative path only, so the checkout directory in front of it makes the real number larger and this direction cannot produce a false positive. Lower it to about 180 to leave room for a deep checkout directory.","input":{"allowCustom":true,"choices":[],"label":"Max path len"},"name":"max_path_len","required":false,"type":"integer"},{"default":6000,"description":"Upper bound on how many blobs are read for content. The default 6000 covers most repositories in a few seconds, and when the bound is hit the report says the scan was truncated instead of quietly under-reporting. Path-only checks - case, reserved names, length, unicode - always cover every tracked path regardless of this number.","input":{"allowCustom":true,"choices":[],"label":"Max files"},"name":"max_files","required":false,"type":"integer"},{"default":true,"description":"Whether relative import and include targets are compared against the case of the file they name. The default true catches the defect that only Linux sees: an import that resolves on macOS and Windows and fails on CI. A target that resolves to nothing at all is never reported, because it is far more often a package name or a build alias; set false to skip reading source entirely.","input":{"allowCustom":true,"choices":[],"label":"Check imports"},"name":"check_imports","required":false,"type":"boolean"},{"default":"node_modules,dist,build,vendor,.venv,deps,third_party,thirdparty,3rdparty,external,extern,subprojects,Godeps,.yarn,.pnp","description":"Comma-separated directory names skipped at any depth. The default names the trees people vendor or generate and nobody hand-edits, so a bundled dependency's CRLF never becomes your finding - redis returned 108 criticals from deps/jemalloc and deps/hiredis, code redis does not author; lockfiles, minified bundles and generated protobuf output are always skipped on top of this. Pass an empty value to audit everything the index holds, which is honoured literally: the default list is not silently restored.","input":{"allowCustom":true,"choices":[],"label":"Ignore"},"name":"ignore","required":false,"type":"string"},{"default":"png,jpg,jpeg,gif,ico,webp,bmp,tiff,pdf,zip,gz,tar,tgz,bz2,xz,7z,jar,class,so,dylib,dll,exe,bin,wasm,woff,woff2,ttf,otf,mp3,mp4,mov,wav,webm,psd,sqlite,db,pyc,o,a,lib,p12,pfx,parquet,npy,h5,onnx,xlsx,docx,pptx","description":"Extensions skipped before any content is read. The default is a fast pre-filter, not the safety net: every remaining blob is still classified by looking for a NUL byte in its first 8 KiB, so an unlisted binary format is caught anyway and never reported for line endings. Extend it when a large text-like format in your repository is not worth reading.","input":{"allowCustom":true,"choices":[],"label":"Binary extensions"},"name":"binary_extensions","required":false,"type":"string"},{"default":true,"description":"Whether .gitattributes suppresses line-ending findings it already accounts for. The default true drops every file the repository declares as eol=crlf, binary or -text, which is the difference between a report you can trust and one that flags the .bat files you deliberately keep as CRLF; set false to see the raw byte-level picture.","input":{"allowCustom":true,"choices":[],"label":"Respect gitattributes"},"name":"respect_gitattributes","required":false,"type":"boolean"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/chinmoy/os-portability@0.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/chinmoy/os-portability@0.2.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/chinmoy/os-portability@0.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-03T15:11:13.741284+00:00","reference":"chinmoy/os-portability@0.2.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["git","python3"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":3,"installs":0},"steps":{"count":8,"names":["attributes_coverage","case_collisions","exec_and_links","host_paths","line_endings","unicode_paths","verdict","windows_hostile"]},"title":"os-portability","type":"play","version":"0.2.0","visibility":"public"}