Skip to content
-
ovhost alerts relay (roadmap WS-H task 11): the alerts firing in the host's Prometheus now reach the operator. Every two minutes (openvibe-alerts.timer) it reads /api/v1/alerts, keeps the firing ones, and sends the complete set to Network's POST /internal/operator/alerts with Host's token (network.operator.alert; Contracts v0.62.0, pinned here from v0.58.0). Network pages the owner when an alert opens, daily while open, and when it resolves. Severity page maps to critical, ticket to warning. Only the name, severity, annotations, service label and start time leave the host, and a Prometheus that does not answer sends nothing (an empty set would resolve everything). openvibe_alert_relay.prom and the OpenVibeAlertRelayFailing rule record relay failures. docs/operator-alerts.md; test/alerts.test.jsOpenVibers · 26 Sept 2026
972d9db
-
Pins: openvibe-shared 1.20.0 -> 1.22.0 (realtime notification badge, off until a site turns it on; the unreachable-host browser check)OpenVibers · 26 Sept 2026
7514789
-
Deploy proofs, game shard: the first-connect edge is fixed (Games b207e78)OpenVibers · 26 Sept 2026
b9a4a48
-
Deploy proofs, game shard: the hung reconnect was the probe's own; the game client polls /healthz and reloads after a restart. What is left is a first connect without a timeout during the 2 s gapOpenVibers · 26 Sept 2026
a666ca1
-
Deploy proofs: game shard (WS-P task 3): graceful stop saved the world in 34 ms and closed clients with 1012 server_restart; a reconnect made during the 2 s restart hung over 40 s instead of failing fast (recorded as an open finding: client connect timeout, upgrade before the handler is attached)OpenVibers · 26 Sept 2026
8f49d50
-
Deploy proofs: Chat resume (WS-P task 3): an anonymous global-chat client across a Chat restart reconnected in 1.1 s and its after_id cursor read returned no missed or duplicate messages; recorded with its limit (a quiet chat: no message in the gap)OpenVibers · 26 Sept 2026
b87b634
-
browser-check --network-down (ADR-024, roadmap WS-E task 1): every site's home loads with openvibe.network unreachable (Shared 1.21.0 checkUnreachable) at 390 and 1280 px and must still paint: 200, settled, 120+ characters, a --accent theme token and a background. First run 20/22 (Media had no theme tokens, fixed in Media 2be314b and the index page; Billing's short sign-in page was under the old 200-character bar); recorded run 22/22. Plus two 23/23 full browser checks after today's deploysOpenVibers · 26 Sept 2026
9d71913
-
Open redirect fixed (roadmap WS-R task 5): the sign-in next let "/<TAB>/evil.com" through, which browsers read as "//evil.com" (they drop tab and newline characters and read a backslash as "/"); any control character or backslash in next now goes home. test/open-redirect.test.js feeds it the known bypassesOpenVibers · 26 Sept 2026
326a91e
-
Pins: openvibe-shared 1.18.0 -> 1.20.0 (the update matrix and release manifest 1.2.0: client generations, the shell)OpenVibers · 26 Sept 2026
c42a6f0
-
Host firewall proposal: the host firewall is off, so any 0.0.0.0 bind is public (how Live's :3000 was exposed 2026-09-25/26); the intended public listeners and a default-deny ufw allow list, left for the owner (SSH lock-out and WebRTC/TURN ranges)OpenVibers · 26 Sept 2026
27f86d0
-
Deploy proofs (roadmap WS-P task 3): the Live web-drain run, recorded. The first run found four 502s (the release socket unit had dropped its descriptor and Live bound 0.0.0.0:3000 itself); after the repair (Live ab8abff) 57/57 requests answered 200 across the restart, the slowest 0.955 s while queued on the socketOpenVibers · 26 Sept 2026
f62af29
-
Register: /internal/user-role removed (C-54, C-55; Network 60455b3, Live 3a99cdc, WS-B task 2). db-inventory: the 14 legacy databases archived off-host as 20260926-094703, a restore checked byte-identicalOpenVibers · 26 Sept 2026
c940582
-
ovhost archive (roadmap WS-S task 6, hazard H14): dead and backup database files encrypted with the backup key and copied to <prefix>-archive/<host>/<stamp>/ (outside the backup runs, so retention never prunes them), each upload checked by size, an HMAC'd manifest and a local record; archive list and restore (checked against the manifest). Refuses live inventory databases, open files (fuser), symlinks, paths outside /opt /var/lib /root /srv /home. Never deletes. docs/db-inventory.md: the 58 closed database files on the host, classified with a recommended action (legacy archived first; IP-bearing and secret backups keep their dated deletions, never archived). The in-memory S3 moved to test/s3-mock.jsOpenVibers · 26 Sept 2026
6e5e499
-
Pins: openvibe-shared 1.17.1 -> 1.18.0 (update telemetry: prompted count, sessions by generation)OpenVibers · 26 Sept 2026
d8a5546
-
Browser check after the release-notification rollout: 23/23 sites pass (every CSP allows the Events realtime stream)OpenVibers · 26 Sept 2026
f619c3b
-
Limits page source (roadmap WS-N task 7): GET /limits.json on the dashboard host lists the default project limits (projects per owner, sites, custom domains, deploys a day, storage, files and file size) for sandbox and production, read from config, with the problem each answers past it; tenant hosts never reach it (host-isolation)OpenVibers · 26 Sept 2026
d1fc66d
-
Pins: openvibe-shared 1.17.0 -> 1.17.1 (release notifications)OpenVibers · 26 Sept 2026
5d53eef
-
Pins: openvibe-contracts 0.55.0 -> 0.58.0 (host.release.published@1 is validated), openvibe-shared 1.16.1 -> 1.17.0OpenVibers · 26 Sept 2026
3ad54fd
-
Release notifications publish host.release.published, not host.deploy.activated (WS-P task 9)OpenVibers · 26 Sept 2026
100c279
-
docs/release-notifications.md: before a site pins openvibe-shared 1.17.0, its CSP connect-src must allow https://events.openvibe.network (Live and Community do; Network, Wiki, Blog, Codes, Search, Reviews, VIP, Tips, Host, News, Deals and Coupons do not). Otherwise each page load logs one CSP refusal and release-watch stays on polling (state blocked)OpenVibers · 26 Sept 2026
d098cef
-
Release notifications (roadmap WS-P task 9): ovhost publishes host.deploy.activated to OpenVibe.EventsOpenVibers · 26 Sept 2026
62fad64
-
Browser check runs 2026-09-26 after the follow-up deploys: 21/23 sites, then 23/23 after the Live home shell stopped loading ov-mark twice and Tools moved to openvibe-shared 1.16.1OpenVibers · 26 Sept 2026
dd0dd12
-
Pins: openvibe-shared 1.16.0 -> 1.16.1 (the OV mark stops animating when idle, hidden or off-screen)OpenVibers · 26 Sept 2026
aad998d
-
Pins: openvibe-shared 1.13.0 -> 1.16.0 (browser-check finds the harness in the install)OpenVibers · 26 Sept 2026
3dea84e
-
browser-check: wait for Chrome to exit and its profile to be removed before the report is written (browser-harness close() now resolves once the profile is gone)OpenVibers · 26 Sept 2026
3165a90
-
Browser check (WS-Q task 3; WS-T tasks 3-4): scripts/browser-check.js runs openvibe-shared/browser-harness against every public product (the registry's public origins whose home answers HTML; known routes + one sitemap URL per section, detail pages first, up to --max-routes 7; /__ovcheck-404 must answer 404; Billing /policy only): per route x 390/768/1280 status, console errors, overflow, duplicate scripts; no-JS text, canonical and JSON-LD against visible text; axe-core serious/critical; per site repeated-navigation growth and idle work. Known noise (Cloudflare's injected beacon blocked by CSP, signed-out 401 session probes) is counted per label, --strict-errors fails it. --json, --out (appends a dated table + details), --remote <ssh-host> (script + harness streamed over ssh into a temp dir, run with --json there, removed; needs Node 22 + Chrome; OVHOST_SSH), --routes-file. ovhost deploy --browser-check: after a deploy that went through, that site is checked and reported; never changes the exit code or the record (lib/browser-check-hook.js). docs/browser-check.md: what it checks, the remote runner, the 2026-09-26 findings with the fix commits per repo, what is left, and the first recorded production run (11/23 sites pass before the fixes deploy). test/browser-check.test.js (stub harness, local registry, fake ssh, the deploy hook)OpenVibers · 26 Sept 2026
2286531
-
validate: a git checkout reached through <dir>/current -> <dir>/releases/<id> is a deployed release (Live), so its detached HEAD is not a branch error; tracked changes still areOpenVibers · 26 Sept 2026
2190761
-
Pins: openvibe-contracts 0.49.0 → 0.55.0 (the lifecycle block ovhost validate reads)OpenVibers · 26 Sept 2026
e1bcba6
-
Lifecycle declarations in ovhost validate (WS-P task 1): lib/lifecycle.js reads each service's lifecycle from the inventory entry (it replaces the manifest's on this host), validate --manifest <file>, or the manifest in the installed openvibe-contracts (0.55.0 and later), and validate fails naming the service and the field when one is missing (live: lifecycle.shutdown.deadlineSeconds is missing), when a running service declares no liveness or shutdown, when shutdown.deadlineSeconds exceeds a unit's stop timeout (systemd's effective TimeoutStopUSec, else TimeoutStopSec in the unit source) or the unit's KillSignal is another signal, and when the checkout's installed openvibe-contracts is outside contracts.range; worker units that drain longer than their stop timeout warn (ovhost never stops them); systemd show reports TimeoutStopUSec and KillSignal; test/lifecycle.test.js (11 cases), fixtures carry a lifecycle; README and host.example.json say where the block comes from and that the v0.49.0 pin has none yetOpenVibers · 26 Sept 2026
70fc2ea
-
Shared-host outage test (WS-P task 5): scripts/shared-host-outage.js loads every public site with openvibe.network blocked and checks content, navigation and theme; the recorded production run passes 18/18 after the Games navigation fixOpenVibers · 26 Sept 2026
7256966
More commits