Skip to main content
The Palyra release engineering pipeline ensures version coherence across the monorepo, packages high-integrity portable bundles for desktop and headless environments, and generates cryptographically verifiable provenance for all distribution artifacts.

Release Workflow & Version Coherence

The release process begins with a strictly enforced version coherence check. The system asserts that the repository state matches the intended release version before any packaging occurs.
  1. Metadata Derivation: The prepare-release job in .github/workflows/release.yml uses scripts/release/assert-version-coherence.ps1 to extract and validate the workspace version .github/workflows/release.yml#30-45.
  2. Tag Validation: If triggered by a git tag, the workflow ensures the tag (e.g., v1.2.3) matches the internal crate versions exactly .github/workflows/release.yml#51-64.
  3. Note Generation: Release and migration notes are dynamically generated and uploaded as draft assets to the GitHub release .github/workflows/release.yml#78-113.
Sources: .github/workflows/release.yml#1-120, scripts/release/common.ps1#1-196

Portable Bundle Composition

Palyra distributes two primary artifact kinds: Desktop and Headless. Both are packaged as ZIP archives containing a self-contained payload of binaries, web assets, and documentation.

Bundle Structure Comparison

ComponentDesktop BundleHeadless Package
Control Centerpalyra-desktop-control-centerN/A
Core Daemonpalyradpalyrad
Browser Servicepalyra-browserdpalyra-browserd
CLI Entrypointpalyrapalyra
Web Dashboardweb/ (static dist)web/ (static dist)
Operator Docsdocs/ (Markdown)docs/ (Markdown)
Metadatarelease-manifest.jsonrelease-manifest.json
The package-portable.ps1 script orchestrates this composition, staging binaries and ensuring that required documentation (README, ROLLBACK, LICENSE) is present scripts/release/package-portable.ps1#28-95.

Code-to-Entity Release Mapping

The following diagram maps release script logic to the physical filesystem entities they produce. Sources: scripts/release/package-portable.ps1#1-148, scripts/release/common.ps1#33-60

Integrity & Security Gates

Release artifacts undergo rigorous validation to ensure supply chain security and runtime safety.

Manifests & Checksums

Every bundle includes a checksums.txt file containing SHA256 hashes of every file in the payload scripts/release/package-portable.ps1#79-81. The validate-portable-archive.ps1 script performs a mandatory re-calculation of these hashes during the CI smoke test to detect corruption or tampering scripts/release/validate-portable-archive.ps1#94-111.

Security Scanning

The security.yml workflow executes a comprehensive suite of gates: Sources: .github/workflows/security.yml#1-156, scripts/release/validate-portable-archive.ps1#1-133

Installation & Lifecycle Scripts

Portable bundles are managed via specialized installation scripts that handle environment setup, CLI exposure, and service unit generation.

Headless Installation Flow

The install-headless-package.ps1 script performs the following:
  1. Extraction: Unpacks the archive to a clean directory scripts/release/install-headless-package.ps1#28-29.
  2. CLI Exposure: Creates a shim or symlink for the palyra command scripts/release/install-headless-package.ps1#47-50.
  3. Configuration: Invokes palyra setup to initialize the remote config and validates it scripts/release/install-headless-package.ps1#61-62.
  4. Service Integration: Generates a systemd unit file for palyrad on Linux systems scripts/release/install-headless-package.ps1#88-112.

Release Smoke Testing

Before a release is finalized, the run-release-smoke.ps1 script executes a full lifecycle test:

Lifecycle Entity Interaction

The following diagram illustrates how installation scripts interact with system components and the CLI. Sources: scripts/release/install-headless-package.ps1#1-132, scripts/test/run-release-smoke.ps1#1-123

Bundled Documentation (Offline Docs)

The CLI provides a docs command family that operates on the Markdown files packaged within the bundle’s docs/ directory crates/palyra-cli/src/commands/docs.rs#11-14. Sources: crates/palyra-cli/src/commands/docs.rs#1-212, scripts/release/package-portable.ps1#50-53