A full run on Windows 11 failed 31 tests, almost all because a fixture
assumed POSIX behaviour or read the developer's own Git configuration
rather than because Strix misbehaved. That noise hides real regressions.
- Resolve git with `shutil.which` instead of `/usr/bin/env git`, and skip
the module when no git is present. This single line accounted for 19 of
the 31 failures.
- Isolate every git subprocess from `GIT_CONFIG_GLOBAL`/`GIT_CONFIG_SYSTEM`
and supply a commit identity, so a global `core.excludesFile`,
`commit.gpgSign`, or `core.hooksPath` cannot change what a test sees.
- Create control-character filenames through a fixture that skips where
the filesystem rejects them, instead of failing to build the fixture.
- Choose the protected system directory for the platform in the mount
policy test. `check_mountable_dir` already handles both families, so on
Windows this now exercises the real policy instead of failing early.
- Assert secret-file permissions through a fixture that keeps the POSIX
0o600 check exact and, on Windows, skips with the reason stated rather
than weakening the assertion. The device-identity test is split so its
identity contract still runs everywhere.
- Pin mypy to `platform = "linux"` so type checking resolves the same
APIs as CI and the container target. This removes the six
`fcntl.flock`/`os.getuid`/`os.getgid` attribute errors reported on
Windows without adding ignores that `warn_unused_ignores` would then
flag on Linux.
Windows now reports 12 failures, all owned elsewhere: #1258 (7-8,
intermittent), #648/#652, #1288, and #1285.
Refs #1259
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* feat(cli): add strix login for managed platform sign-in (device flow)
* feat(cli): add --scopes flag to strix login
* docs: document strix login and managed billing in README, AGENTS, docs, and managed skill
* fix(cli): handle malformed login responses and credential file failures
* fix(cli): reject sign-in responses without an API token
* feat(login): interactive workspace and scope selection with presets
* fix(login): reject malformed API token values in sign-in responses
* fix(login): skip the scope prompt when stdin is not a terminal
* fix(login): tolerate malformed selection containers and remove unreadable credential files on logout
* fix(login): treat overflowing timing values as invalid
* fix(login): show the configured platform host in the sign-in banner
* fix(login): bound device flow timing values and clean up unreplaced secret temp files
* feat(cli): add the strix cloud command surface for the managed platform
* feat(cli): manage workspaces and hosted onboarding links from strix cloud
* fix(cli): report a leftover temporary secret file instead of hiding it
* feat(cli): pass a Stripe payment method to the top-up wallet client
* docs(cloud): recommend the Stripe agent wallet as the default payment path
* fix(cloud): preserve API auth during MPP payment
* fix(cloud): drop knowledge query and settings commands removed from the API
* fix(cloud): align agent commands with API contracts
* fix(cloud): send required PR review integration fields
* fix(cloud): preserve scopes when switching workspaces
* fix(cloud): make session command help non-destructive
* feat(cloud): improve human navigation and output
* feat(cli): add native shell completions
* feat(cloud): tailor human list and detail views
* feat(cloud): upload local source for managed scans
* fix(cloud): infer scan type from local targets
* Add agent-friendly managed cloud CLI
* Harden cloud CLI type boundaries
* Clarify cloud test user MFA options
* Correct cloud vulnerability status guidance
* Clarify chat file path handling
* Allow signed storage upload URLs
* Fix provider token request handling
* Improve cloud CLI human list views
* Make cloud CLI workflows actionable and safe
* Make cloud workspace switching session-safe
* Preserve CLI session metadata in JSON output
* Remove preview protection bypass plumbing from cloud CLI