Files
PerishFire 8ab7c3d5f1 feat(standalone): establish the exact lifecycle and Terminal carrier (#7716)
* feat(standalone): add shell-neutral exact lifecycle

* feat(terminal): add native exact cold-start carrier

* test(terminal): exercise mutable exact channel heads

* feat(standalone): model synced blobs and Shell updates

* feat(terminal): exercise the complete Shell lifecycle

* feat(release): add the independent exact Terminal line

* test(exact): run the full local Terminal release line

* feat(terminal): harden exact Sidecar lifecycle

* feat(standalone): prove exact update transactions

* refactor(standalone): separate shell lifecycle dimensions

* refactor(e2e): decouple terminal exact drivers

* refactor(terminal): isolate exact sidecar fixture host

* feat(terminal): gate handoff on physical retirement

* refactor(release): gate exact activation on public acceptance

* test(terminal): formalize guarded lifecycle algebra

* fix(terminal): guard shell installer handoff

* feat(terminal): add exact bootloader handoff

* feat(terminal): integrate exact sidecar lifecycle

* refactor(exact): rename validation channels

* test(terminal): harden exact release acceptance

* fix(postinstall): build standalone dependencies first

Generated-By: looper 0.11.2 (runner=fixer, agent=codex)

* fix(ci): build the native Terminal scene

Generated-By: looper 0.11.2 (runner=fixer, agent=codex)

* test(ci): cover exact convergence handoff routing

Generated-By: looper 0.11.2 (runner=fixer, agent=codex)

* fix(exact): isolate terminal validation from main CI

* fix(terminal): complete shell update confirmation

Generated-By: looper 0.11.2 (runner=fixer, agent=codex)

* fix(exact): bind acceptance to installed manifest

Generated-By: looper 0.11.2 (runner=fixer, agent=codex)

* fix(standalone): block occupied shell installs

Generated-By: looper 0.11.2 (runner=fixer, agent=codex)

---------

Co-authored-by: Looper <looper@noreply.github.com>
2026-09-03 03:50:34 +00:00

1.7 KiB

Terminal Shell guide

Terminal is a native carrier distributed as POSIX /bin/sh and Windows PowerShell 5.1. Its pnpm module registration exists for natural workspace dependencies and Vitest/TypeScript tests; it is not the distributed runtime.

  • Do not implement or distribute Terminal runtime behavior in TypeScript, and do not depend on a preinstalled Node runtime. TypeScript is allowed under tests.
  • Pin official Node archives exactly. Verify archive bytes, the installed executable, and node --version before invoking the fossil adapter by absolute path.
  • Keep the native layer mechanical: resolve fixed paths, install/probe the carrier, emit contract JSON, and execute runtime/fossil.mjs. It must not parse release metadata or mutate Standalone generation/reference state.
  • runtime/fossil.mjs is a thin Shell-owned adapter. Store, update, activation, rollback, and lifecycle transactions remain in @open-design/standalone.
  • Own target scene assembly and distribution. Consume Closure and Standalone only as explicit build artifacts supplied in a request; never import app sources.
  • A distribution is complete and offline. Thin installers, when emitted, must pin one immutable archive URL and digest and may not resolve mutable latest metadata.
  • Keep lifecycle execution behind the Standalone LifecyclePort seam and adapt that port only through the public @open-design/sidecar boundary. Terminal's fixture updater must exercise the complete Electron-facing provider contract, including progress, foreign-reference blocking, defer, and forced stop/install handoff; it is not a user-facing updater.
  • Do not depend on .github/scripts, tools/pack, or tools/release.