Skip to content

ship/native server pipeline - #6282

Merged
matthewevans merged 5 commits into
mainfrom
ship/native-server-pipeline
Jul 21, 2026
Merged

ship/native server pipeline#6282
matthewevans merged 5 commits into
mainfrom
ship/native-server-pipeline

Conversation

@matthewevans

Copy link
Copy Markdown
Member
  • feat(server): channel-aware startup data bootstrap and shell lifecycle flags
  • fix(server): best-effort draft-pools bootstrap, HTTP timeouts, https-only manifests
  • ci: slim signed server artifacts, content-addressed data, and continuous preview server pipeline
  • fix(ci): globally serialize preview manifest publication

…e flags

Add configurable bind addressing for loopback shell launches.
Add stdin-close lifecycle shutdown for orphan prevention.
Add optional exact-Origin WebSocket handshake filtering.
Add signed release/preview data bootstrap with verified downloads and dev-only fixture gating.
…ous preview server pipeline

Publish content-addressed draft pools in deploy and release data pipelines.

Compute and export the deploy engine fingerprint, stamp the preview frontend environment, and dispatch the continuous preview server artifact workflow.

Add three-platform preview server builds with Ubuntu minisign signing, signed manifest-last publication, and current-plus-previous R2 retention.

Publish signed release data manifests and slim binary-only server assets while retiring bundled data archives.

Remove server-data artifact plumbing and Docker data baking so server data bootstraps at runtime.

Sequencing: merge together with, or after, the server bootstrap commit; slim artifacts without bootstrap support would strand fresh self-hosters.
@matthewevans
matthewevans enabled auto-merge July 21, 2026 15:55

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements a startup data bootstrapping mechanism for the phase-server, enabling it to dynamically download and verify required card data and draft pools. A new data_bootstrap module is introduced to fetch signed manifests, verify them using Minisign signatures and SHA256 hashes, and atomically write the verified files. The main server is updated with new CLI options, including binding address, origin validation for WebSockets, and a stdin-close watchdog for clean shutdowns. Since there are no review comments, I have no feedback to provide on the review itself.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@matthewevans
matthewevans disabled auto-merge July 21, 2026 16:12
@github-actions

Copy link
Copy Markdown

Parse changes introduced by this PR

✓ No card-parse changes detected.

workflow_dispatch refs must be a branch or tag — a 40-hex SHA fails with
422, so every deploy's preview-server dispatch would have silently missed
(the failure is deliberately non-fatal). The exact source tree is already
pinned by the 'commit' input the workflow checks out. Same pattern as
nightly-release.yml. Also documents the preview image's PHASE_CHANNEL
identity gap (GH #6287) where the old comment claimed runtime bootstrap.
@matthewevans
matthewevans enabled auto-merge July 21, 2026 16:32
@matthewevans
matthewevans added this pull request to the merge queue Jul 21, 2026
Merged via the queue into main with commit a15e4d2 Jul 21, 2026
13 checks passed
@matthewevans
matthewevans deleted the ship/native-server-pipeline branch July 21, 2026 17:05
andriypolanski pushed a commit to andriypolanski/phase that referenced this pull request Jul 21, 2026
…to phase-server (phase-rs#6292)

Two distinct causes broke the first executed deploy since phase-rs#6238/phase-rs#6282:

1. setup-rust-toolchain exports RUSTFLAGS='-D warnings' by default, and an
   env RUSTFLAGS overrides ALL .cargo/config.toml rustflags — silently
   dropping the [target.wasm32-unknown-unknown] 16 MiB shadow-stack
   link-arg phase-rs#6238 added, tripping build-wasm.sh's assert_wasm_stack guard.
   Pass rustflags: '' on every wasm-building job (deploy build-wasm,
   release wasm + broker-wasm) so config.toml stays authoritative.

2. phase-rs#6282 gave phase-server a rustls-only reqwest, but the CI builds run
   'cargo build --bin phase-server' unscoped from the workspace root, so
   feature unification folds feed-scraper's native-tls reqwest features
   in, dragging openssl-sys into the musl cross-compile (no OpenSSL →
   build failure) and dynamic OpenSSL into the Docker image (runtime has
   no libssl). Scope every server build with -p phase-server: deploy,
   release (linux + matrix legs), Dockerfile compile stage, Tiltfile.

Verified: cargo tree -p phase-server -i openssl-sys --target
x86_64-unknown-linux-musl finds no path post-fix (present unscoped);
rustflags input semantics confirmed against the action's action.yml.

Co-authored-by: matthewevans <matthewevans@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant