Add Phase 0 spike: end-to-end transport verified

Bare PHP behind FrankenPHP plus a Qt/QML host that spawns it. GET /api/ping
publishes a Mercure event; the QML window receives it back over the SSE
stream. Findings (Caddy directive ordering, Mercure transport scalar,
PR_SET_PDEATHSIG for child cleanup, PHP 8.5 curl_close deprecation, port
collision with system FrankenPHP, pure-QML SSE viability) are recorded in
spike/README.md so Phase 1 starts from a known-good baseline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-02 00:15:50 +02:00
parent 0b394510bc
commit 9655b6fef9
9 changed files with 517 additions and 0 deletions

22
spike/run.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Build (if needed) and run the Phase 0 spike.
# Toolchain expected on PATH: cmake, qmake6 (or qmake from qt6-base-devel), g++.
set -euo pipefail
SPIKE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="$SPIKE_DIR/build"
BIN="$BUILD_DIR/spike"
if [ ! -x "$SPIKE_DIR/bin/frankenphp" ]; then
echo "missing $SPIKE_DIR/bin/frankenphp — run download from spike/README.md" >&2
exit 1
fi
if [ ! -x "$BIN" ]; then
echo "==> configuring + building Qt host"
cmake -S "$SPIKE_DIR/qt" -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Debug
cmake --build "$BUILD_DIR" --parallel
fi
echo "==> launching spike"
exec "$BIN"