V-Sekai Fire Deck Log — 2026-05-07 (Thursday)

Date: 2026-05-07

Added

  • Maglev cycle 0 (infra) verified pass — all 4 pass criteria confirmed against the live Fly API via the verify_fly_state workflow on infra. Gateway machine e7845e1ef35768 started + IPv4 213.188.205.180; CRDB volume crdb_data 10GB iad attached; uro deploy succeeded; mTLS secrets present
  • Maglev cycle 1 (gateway handshake) verified passcycle-tests/cycle-1-gateway-handshake/cycle1.gd completes a real-internet WebTransport/QUIC handshake against gateway.chibifire.com:443, sends a ping datagram, receives the gateway’s pong reply (~880 ms round-trip), exits 0
  • New repo cycle-tests — minimal headless Godot SceneTree per cycle that exercises pass criteria against live infrastructure; registered as submodule
  • New repo multiplayer-fabric-godot-maglev — canonical engine source for the build repo’s git subrepo, holding the assembled multiplayer-fabric-base and multiplayer-fabric branches
  • observability registered as submodule (previously missing — only ADRs existed)
  • Cycle 2 producer-side OTel export wired in three apps: gateway (gateway.dispatch span around Gateway.Router.handle/1), uro (auto-instrumented Phoenix + Ecto via :opentelemetry_phoenix + :opentelemetry_ecto), zone (engine’s module_open_telemetry initialized in bootstrapped project/main.gd); all ship to observability.internal:4318
  • Bootstrapped zone Godot project — project/project.godot + project/main.gd (the directory was an empty stub before)
  • master branch on godot pinned to merge-base 835e2dcbba so future assemblies start from a stable upstream point
  • 10 single-topic feature branches replacing the kitchen-sink feat/engine-patches: feat/engine-misc, feat/tapered-capsule-shape, feat/crypto-extensions, feat/predictive-bvh, feat/uds-test-stability, feat/misc-cleanup, feat/lint-cleanup, feat/ci-fixes, feat/agents-docs, feat/fork-scaffolding (last is now unused)
  • Read-only verification workflows on infra: verify_fly_state.yml, start_fly_apps.yml, verify_observability.yml — query Fly + Victoria* APIs and upload state as JSON artifacts so cycle verification doesn’t depend on log scraping or local flyctl auth

Changed

  • build/godot/.gitrepo switched source from godot @ multiplayer-fabric (vendored via stale pinned SHA) to multiplayer-fabric-godot-maglev @ multiplayer-fabric-base (canonical assembled output)
  • build test workflows consolidated: 6 per-feature-branch test-*.yaml files → one test-feature-branches.yaml with {branch, platform} matrix (396 → 73 lines)
  • Baker + zone GHCR Godot binary builders now track build/main instead of stale pinned commit b27142e94c — picks up engine updates on next cron tick or workflow_dispatch
  • docker zone-fabric image switched from Mono Godot (with GodotSharp + .NET 8 runtime) to non-Mono GDScript build (precision=double); matches the assembled engine
  • Branch protection on godot/multiplayer-fabric removed so update_godot_v_sekai.exs doesn’t trip the bypass warning on every assembly run

Fixed

  • Zone deploy “Pull Godot zone binary from GHCR” failure — was pulling ghcr.io/v-sekai-fire/godot-zone-double:latest (no workflow ever published this name); switched to multiplayer-fabric-zone-godot:latest which the build workflow actually publishes
  • Duplicate Control::call_gui_input declaration in scene/gui/control.h — the OTel branch declared it in the drag-and-drop section while engine-misc declared it in the input-events section; auto-merge kept both → compile error. Aligned both to declare it in input-events
  • Control::call_gui_input body divergence — OTel branch had set_input_handled clobber-restore semantics, engine-misc had local_input_handled OR-restore. Aligned OTel to engine-misc verbatim so add/add merges produce identical content with no conflict
  • Cross-branch file overlap in the split feature branches — feat/engine-misc shed tests/scene/test_fabric_zone.cpp (belongs in feat/module-multiplayer-fabric); feat/fork-scaffolding shed AGENTS.md, core/math/predictive_bvh_adapter.h, tests/scene/test_fabric_zone.cpp (belong to agents-docs / predictive-bvh / fabric module respectively); feat/uds-test-stability shed the 5a2663346c re-add of test_fabric_zone; feat/lint-cleanup rewrote its .gitignore commit to add only .lake/ (was a kitchen-sink with sandbox/uro/keychain entries); feat/fix-picosocks-cmsghdr-mingw reset .gitignore to master and dropped predictive_bvh_adapter.h
  • mbedtls/crypto_mbedtls.{cpp,h} was orphaned in feat/fork-scaffolding despite being the implementation backing the API in feat/crypto-extensions — moved into feat/crypto-extensions so the API and impl ship together

Removed

  • stage multiplayer-fabric remotes/v-sekai-fire/multiplayer-fabric line from gitassemblymultiplayer-fabric-base is now the canonical assembled output; the redundant publish stage is gone
  • feat/engine-patches no longer referenced in gitassembly — superseded by the 10 split feature branches; kept as historical ref upstream
  • 6 stale per-feature-branch test workflows on build: test-engine-patches.yaml, test-module-http3.yaml, test-module-multiplayer-fabric.yaml, test-module-speech.yaml, test-multiplayer-fabric.yaml, test-open-telemetry.yaml — replaced by the consolidated matrix workflow
  • feat/fork-scaffolding from the active assembly path — feat/fix-picosocks-cmsghdr-mingw already provides equivalent CI/Docker scaffolding (14 of 16 files overlapped)