Table of contents

Roadmap

PwshUpdated 2026-10-01

A checked item names the gate or result that proves it; an unchecked item is planned, not done. Proofs and their evidence classes live in AGENTS.md (Established facts) and Build Pwsh. The implementation plan sequences the work; the roadmap owns status.

Product boundary

Pwsh turns a PowerShell script into an Android app and owns every byte in between. setup.ps1 emits the IL, manifest, ELF libraries, machine code and signed APK from pinned, hash-verified inputs. The current preview deliberately contains no DEX; the fixed Java subclasses planned below will be emitted when their gates are ready. On the device an owned native host starts CoreCLR and runs PowerShell; Android is reached through its C APIs or JNI bound from pinned headers. Applications are PowerShell scripts.

The current build inputs pin PowerShell 7.7.0-preview.4 and .NET 11.0.0-rc.1.26425.128.

Verified checkpoints

Completed build-unblocking work

Payload

Leaving .NET for Android

Emitted native code: racing RyuJIT

Compilers are competitors and oracles, not authorities. The model is Kokoro-Hexagon's results at commit 250e10dc: its PowerShell-lowered R0Sub0 kernel ran 2.21–2.30x faster in DSP ticks than Hexagon Clang 19.0.04 output, bit exact, on SM8550 and SM8635 (r0sub0-lowered-vs-llvm-20260924.md, r0sub0-cross-soc-20260924.md), after an earlier head-to-head lost at 0.865x. The win came from specialization to known shapes and layout.

Build hygiene

Command payload and dependency repair

The payload review and cut order are in the implementation plan, step 2. The payload is the committed 102 images, Newtonsoft included: SMA reaches it on every start (ExperimentalFeature.cs:136, PSConfiguration.cs:99). Each cut leaves only with its own result. Estimated total, A-E: ~5.0 MB of store and ~2.1 MB of APK per architecture; estimates, not results.

UI and platform

ConsoleHost implementation tasks within P0-P8

These tasks refine the gates above. scripts/ConsoleHost.ps1 is the planned PowerShell-authored composition/emission entrypoint; it does not yet exist. Keep modules/Console.psm1 as the reference during lowering and keep diagnostic Profile fixtures distinct. The process host can run graphical applications or services without creating a console.

Microsoft guidance defines VT behavior, retained scene semantics and Terminal/Fluent interaction. Google guidance defines hardware Surface coverage, JNI thread/reference lifetimes, NativeActivity teardown, InputConnection, density/insets and accessibility. Exact source links and their implementation consequences are in the work order. Following those contracts introduces no WinUI/XAML, Xamarin, browser, AndroidX or third-party managed UI dependency.

Full-screen TUI and optional native application follow-on

These are separate capability gates; the initial operational PowerShell console does not claim complete terminal emulation.

Design constraints: one event queue, blocking in ALooper_pollOnce(-1), with lifecycle, input, timers and completions as file descriptors on the looper; no tick or polling loops.

Optional packaged commands and ADB

Follow the optional scripts work order. SMA provides the language, advanced-function and command-discovery machinery; the host supplies a selected catalog of signed assets and shared platform services. This work does not extend R1-R9.

Optional on-device Morse and V.21

Follow the device signals work order. These capabilities execute through owned Android APIs, not ADB, and do not extend R1-R9.

Release: APK preview finish line

The preview is ready to share when every required item below is checked and linked to evidence for the exact release APK. P0-P8 provide the implementation gates; this list defines the release subset. Unchecked follow-on work elsewhere does not extend this finish line.

Required before sharing the APK

The concrete product acceptance is: install APK -> managed interface appears -> enter text with the keyboard -> execute Get-ChildItem asynchronously -> formatted output appears -> prompt returns -> switch to an independent graphical pane -> resize/IME remain usable -> repair a failing profile without clearing storage -> process stays alive.

Explicitly after the first APK preview

Complete addressed-terminal/alternate-screen TUI compatibility, Microsoft Edit .so hosting, task-manager application, full editor parity, a Windows GPU presenter, optional script/PC/AOA bundles, frozen CellCanvas compatibility 2e/2f, Vulkan/private Skia, general desktop/window management, remoting/video and self-updating native/IL capabilities are subsequent work. The first editor scope is profile repair. Core settings cover appearance and essential controls; a complete Fluent settings catalog is not a release prerequisite.

An APK below 20 MB is a size target, not a claim or a substitute for R1-R9. Measure the final release artifact before publishing its size. Additional dependencies require a named requirement, provenance and measured cost; no optional application is bundled by default.