Re-onboarding for Koen after the Gallo-Romeins Perforce server was migrated to a scale on the hydraskin fleet (#484). SAME hostname, but a NEW p4d instance, so Koen needs a fresh SSL trust and a new temporary password. Supersedes #480. Contains a TEMP password — redact after sending and CLOSE once Koen has logged in and changed it.
Hi Koen,
We moved the Gallo-Romeins Perforce server to new infrastructure. The address is the same, but it is a fresh server, so please reconnect with the details below. If you set a password earlier it no longer applies.
Connection
First-time setup (P4V)
Command line equivalent
p4 set P4PORT=ssl:perforce.galloromeins.experiencenet.com:1666
p4 set P4USER=koen
p4 trust -y # accept the new fingerprint
p4 login # temp password, then p4 passwd to set your own
Keep Binaries/, Build/, Intermediate/ out of Perforce, but NOT Binaries/ThirdParty/ (redistributables).
Any trouble connecting, reply here.
Internal: new p4d instance on hydraskin-perforce-1 (178.105.185.28), scale galloromeinsmuseum. Admin via ssh root@178.105.185.28 -> incus exec galloromeinsmuseum (set P4CLIENT, container hostname collides with depot name). Rotate: p4 passwd koen as hydra_admin. Runbook: hydraperforcewatcher/docs/runbooks/galloromeins-perforce.md.
CONFIRMED: Cyborn uploaded. Change 5 by koen@cyborn.be via their Jenkins automation (RomeinsMuseumTongeren) — a real packaged UE build, 351 files, ~5.3 GB, including RomeinsMuseum/Binaries/Win64/RomeinsMuseum.exe. Their side works end to end on the migrated scale. It is ONLY the packaged build (no project source — no .uproject/Source/.cpp/.uasset; cooked .pak content + compiled binaries).
ISSUE FOUND + FIXED: they submitted the RAW build tree (loose folders), but the watcher's uploader required a single .zip artifact, so it errored every poll ('no .zip artifact found') and the build never reached the fleet. Fixed in hydraperforcewatcher v0.3.0: if no archive is present the uploader now zips the whole synced tree into one build.zip (stored, not compressed) and publishes that as build_url; an existing archive is still uploaded as-is. Deployed to the node and re-processed change 5 — VERIFIED build.zip on the mirror (builds/galloromeins/5/build.zip, 5,315,408,424 bytes, HTTP 200), CL recorded processed. Tests + testbook updated.
Still separate (not this fix): the experience-notify webhook returns 404 because no gallo-romeins experience is registered in the library to auto-stage against — build delivery works, auto-staging needs the experience registered (the .hydrabuild.yaml warning is also benign/non-fatal). Flag if you want auto-stage wired.
Checked the registered experiences. The gallo-romeins-museum experience IS registered and live (dev cyborn, owner gallo-romeins-museum, venue bxl1/gallo-romeins-museum), from the 2026-07-17 onboarding. The notify was 404ing due to a NAME MISMATCH: the experience's watch_name is gallo-romeins-museum and release_path builds/gallo-romeins-museum, but the watcher was configured with watch name/release_path galloromeins. The library matches notifies strictly by watch_name (FindByWatchName), hence 'no experiences match watch_name galloromeins'.
FIXED: aligned the watcher to the registered experience (watch name -> gallo-romeins-museum, release_path -> builds/gallo-romeins-museum; agent_id stays galloromeins for the dashboard) and reprocessed CL5. Notify now succeeds — Cyborn's build is registered as development_build #2 with build_url builds/gallo-romeins-museum/5/build.zip (5.3 GB, verified 200). Cleaned up the orphaned pre-rename upload.
TWO things remain before it's live on the body (fluffy), both deliberate human gates, NOT auto-done:
hydraexperiencelibrary stage gallo-romeins-museum --cl 2 then promote. I did NOT promote an untested build to production.Also benign: the recurring 'invalid .hydrabuild.yaml' warning is non-fatal (no build config committed; the watcher continues).
fluffy checked + build 2 made available (LIVE). Cyborn's build #2 is deployed and running on the body fluffy-dumpling-87 (hydra-s-0000).
What was done: verified fluffy still ran build 1 (RomeinsMuseum.exe launcher at the dir ROOT — so I REVERTED my earlier exe_path change back to C:\experiences\gallo-romeins-museum\RomeinsMuseum.exe; build 2 has the same root-launcher layout). Downloaded build.zip (5.3 GB) from the mirror, extracted to staging, and validated it runs BEFORE touching build 1. Key gotcha: launching via the hydracluster exec channel runs in session 0 (no display) -> the game crashed with DXGI_ERROR_NOT_CURRENTLY_AVAILABLE (a D3D12 swapchain failure, NOT a WDAC block and NOT a build defect). Re-launched via a scheduled task as the interactive user (session 1, console, autologon hydra, RTX 5070 Ti) and it ran cleanly. Then backed up build 1 to C:\experiences\gallo-romeins-museum.build1.bak, moved build 2 into place, and launched it in session 1 — running stably (~1.2 GB RAM, no crash reporter). Staging files cleaned.
Notes: (a) the build.zip nests content under a Builds/ folder (the watcher preserves the depot Builds/ prefix), so a deploy must use the Builds/ subtree as the build root — worth flattening in the watcher later so auto-deploy consumers don't need to strip it. (b) HydraBody stays DISABLED on fluffy (orphan reaper), so this deploy + launch was manual, consistent with the pico-native local-run model; there is still no autostart/watchdog for the exe. (c) build 1 kept as rollback (delete once build 2 is confirmed good over time). WDAC is enforced but did NOT block the build.
Closed — Koen is onboarded and working: he reset the temp password to his own (temp now returns Password invalid) and his Jenkins submits builds (change 5 landed, went live as experience build #2). Temp password redacted.
Pre-onboarding validation done 2026-08-14 — the full creator pipeline works on the migrated scale. Acting as koen end to end: reset the temp password (forced first-login reset fired as expected), created a stream-bound workspace, submitted a packaged build (.zip) under //galloromeinsmuseum/main/Builds/. The watcher (agent galloromeins) detected it, fetched it, and PUBLISHED it to the mirror — verified the exact file at nbg1.hydramirror.experiencenet.com (HTTP 200). The only non-fatal step was the experience-notify webhook (404 — expected, no gallo-romeins experience registered to auto-stage; that is separate from build delivery).
Cleaned up after: obliterated all test changelists (depot back to 0 changes), deleted the test build from the mirror, reset the watcher state, and recreated koen fresh so his temp password Cyb-sWnQ5wGLaXzD again forces a reset on first login. Depot is a clean slate for Cyborn's first real build. Ready to send Koen the email above.