ship/native server pipeline - #6282
Conversation
matthewevans
commented
Jul 21, 2026
- 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.
There was a problem hiding this comment.
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.
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.
…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>