# JUJU 0.8.0 — local Windows native candidate

Source version: 0.8.0 · 2026-09-10
Windows status: **EXPERIMENTAL / native validation pending**
Publication status: **not published by this implementation task**

This candidate continues the implementation described in
[WINDOWS_DEV_PROPOSAL_TH](WINDOWS_DEV_PROPOSAL_TH.md). It adds authenticated
Windows named-pipe owner IPC, trusted executable/PATHEXT resolution, Git Bash /
cmd shell adapters, Windows process-tree cancellation, Windows child environments,
private-state DACL checks, NTFS guards and bounded file-operation retries.
Existing full/compact/hybrid capabilities remain at 74 / 19 / 49.

The continuation also restores the LSP in-workspace denial contract, adapts the
IPC malformed-response test to the authenticated protocol, adds portable runtime
and adversarial IPC tests and native NTFS tests, and creates Windows Node 22/24
CI evidence jobs. The CI workflow has not been executed in this local session.

The follow-up hardening revalidates filesystem paths before rollback and boot
reconciliation (including an ancestor replaced by a junction/symlink despite
matching file bytes), ports real Pyright fixtures and npm packaging to native
Node/guarded batch invocation, rejects Windows desktop grants before saving,
and removes the accidental older `juju-mcp` self-dependency. The media setup
readiness checks use trusted absolute executable resolution too. Native tests
also cover case-colliding plans, read-only attributes and explicit schedule
sandbox consent.

`npm run test:windows` selects the platform contracts. For a complete local
candidate check from this source checkout after an initial build, run
`node scripts/verify-windows-candidate.mjs` (the verifier and test fixtures are
source-development tools, not part of the installed runtime package).
It records machine-readable results and a before/after guarded source fingerprint;
Windows-only skips on POSIX never count as Windows passes. Earlier evidence in
this release directory is retained; the `continuation/` directory records the
follow-up code and package, not the earlier candidate snapshot.

## Local verification and package

See [TEST_REPORT](TEST_REPORT.md) and
`release-evidence/0.8.0/continuation/verification.json` for actual commands, platform, counts
and remaining gates. Native tests skipped on macOS are not Windows passes.
The local npm-installable archive is kept at:

```text
release-evidence/0.8.0/continuation/juju-mcp-0.8.0.tgz
```

`release-evidence/0.8.0/continuation/artifact.json` records the exact archive hash and size.
This path is a local build artifact, not an npm registry release or ZIP backup.
From source, use `npm ci`, `npm run build` and `npm run test:all`.

## Upgrade boundary

Before replacing an installed 0.7.x CLI, stop its servers with that **matching
old CLI or their existing terminals**. IPC 0.8 authenticates every owner request
and intentionally cannot operate an old unauthenticated endpoint. Do not erase
OAuth state to solve this protocol mismatch. Start the new process afterwards
and rescan tools. The current connected process/global installation is not
changed automatically by this source build.

## Windows v1 limitations and release blockers

No JUJU command OS sandbox, native desktop tools or macOS speech synthesis on
Windows. Owned-job cancellation is hard-kill-only. Native LSP executables must
be `.exe`; npm batch shims require an installed native interpreter plus the
actual JavaScript entrypoint. Batch arguments are intentionally restricted.
Only local-drive workspaces are in scope, not UNC or Windows ARM64.

Before changing Windows to supported: obtain real successful Node 22/24 native
contracts, full core and packaging runs; verify actual 8.3 aliases and private
DACL behavior; complete Windows 11 manual acceptance with Defender and a second
non-admin user; make Windows CI required. Existing legacy test portability
issues must be fixed with native evidence, not hidden by blanket skips.

Detailed implementation map, platform limits and pending acceptance cases:
[WINDOWS_0.8.0](WINDOWS_0.8.0.md), [SECURITY](SECURITY.md),
[MANUAL_ACCEPTANCE](MANUAL_ACCEPTANCE.md), [ADR-030](adr/030-windows-native-candidate.md).
