Skip to content

Windows support audit #91

Open
Open

Description

@David-Noble-at-work

Summary

Windows support is inconsistent across documentation and implementation. The CLI builds Windows binaries (.goreleaser.yaml) but docs variously include, exclude, or ignore Windows. Need a clear support statement and consistent platform coverage.

Current State

Location Windows Status
.goreleaser.yaml Builds windows_amd64.zip — binary ships
docs/guides/writ/platform-awareness.md (line 48) "Windows (via WSL or native)" — claims support
docs/guides/lore/create-manifests.md (lines 57-59) Manifest example shows platforms: [darwin, linux] — no Windows
docs/guides/lore/pipeline.md No Windows examples
install.sh Bash only — no PowerShell bootstrap
noblefactor-ops bootstrap scripts Planned for both bash and PowerShell (noblefactor-ops#61)

Gaps

  1. No clear support statement: Is Windows supported natively, via WSL only, or both? What's the official position?
  2. WSL vs native distinction: If both are supported, which features require WSL and which work natively?
  3. Missing platform in examples: Manifest examples omit Windows from platform lists, implying it's unsupported
  4. No Windows installation instructions: No PowerShell equivalent of install.sh for devlore-cli
  5. No Windows-specific testing: No CI matrix entry for Windows

Action Required

  • Audit all platform references across docs and code
  • Decide: native Windows, WSL-only, or both
  • Create consistent Windows support statement
  • Update manifest examples to include/exclude Windows consistently
  • Add Windows installation path if supported
  • Add Windows to CI matrix if supported

Source

Consolidated from TODO.md section 2.4.

Activity

  1. David-Noble-at-work commented on Aug 9, 2026

    @David-Noble-at-work
    ContributorAuthor

    Empirical audit findings from the writ-deploy scenario's windows leg (#346 phase 4, PR #351 — the scenario now passes on windows-latest):

    1. Fixed: the inventory generator emitted backslashed import paths (filepath.Dir results concatenated raw) — ToSlash at the conversion.
    2. Fixed: Windows drive letters parsed as one-letter URI schemes in the resource constructors, killing every string→resource construction. Resolved by deleting the constructors' unused file-URI input grammar entirely (paths-only; the rehydration round-trip strips the provider's own emitted file:// prefix). Input-domain tests pin the contract.
    3. Fixed: binaries lacked $(GOEXE) suffixing; the scenario job needed shell: bash (Windows run: defaults to PowerShell).
    4. Open product gaps for this audit: TargetOrder reads HOME only (real Windows users have USERPROFILE; the scenario harness sets both, masking it); symlink creation relies on elevated/Developer-Mode privilege (runners are admin — end-user Windows needs a policy); the emitted file://-specific spelling on Windows (file://D:\...) is internally consistent but nonstandard per RFC 8089 Appendix E — fine as an identity tag, worth a deliberate ruling if tags ever leave the machine.
  2. added
    featureDeliverable unit within an epic
    and removed
    taskImplementation work item
    on Aug 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Epic:WindowsCampaignThe Windows campaign epicfeatureDeliverable unit within an epic

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions