openvibers/openvibe.contracts Commits

v0.34.0: realtime is retired, not a placeholder (ADR-005 closed it on 2026-09-22: browser realtime is the SSE delivery plane inside OpenVibe.Events). Its notes say the repository holds only the charter and the closure note, and how it could be reopened. test/run.js: a retired manifest offers no domain, capability, event, namespace, origin or health path, and realtime cites ADR-005

OP OpenVibers committed 24 Sept 2026 · c7e05fc0e6 · 2 files, +13 −2


Changes

ddiff --git a/manifests/services/realtime.json b/manifests/services/realtime.json
iindex eb96ecc9..bf9abc33 100644
---- a/manifests/services/realtime.json
++++ b/manifests/services/realtime.json
@@@ -5,12 +5,12 @@
},
"id": "realtime",
"name": "OpenVibe.Realtime",
-- "status": "placeholder",
++ "status": "retired",
"repository": "OpenVibers/OpenVibe.Realtime",
"domains": [],
"capabilities": [],
"eventsProduced": [],
"eventsConsumed": [],
"namespacesOwned": [],
-- "notes": "Browser delivery plane for events: authorised WS/SSE topics with cursors, resume and presence. Charter only; no runtime."
++ "notes": "Closed by ADR-005 (accepted 2026-09-22): browser realtime is a delivery plane inside OpenVibe.Events (SSE /realtime/stream with per-topic authorisation, Last-Event-ID resume and gap markers), so OpenVibe.Realtime is not built. The repository holds its charter and the closure note only: no runtime, domain, capability or event. Reopened only as ADR-005 says (measured connection counts or fan-out latency that need an independently scaled process), by a new ADR."
}
ddiff --git a/test/run.js b/test/run.js
iindex 500931ec..acea4954 100644
---- a/test/run.js
++++ b/test/run.js
@@@ -305,6 +305,17 @@ for (const id of ['events.event.publish', 'events.event.read', 'events.subscript
}
}
++// ── Retired services (v0.34.0) ───────────────────────────────────────────
++// A retired manifest offers nothing: no domain, capability, event or namespace. Realtime was closed
++// by ADR-005 (realtime runs inside OpenVibe.Events), so it is retired, not a placeholder.
++{
++ for (const m of services.manifests.filter(s => s.status === 'retired')) {
++ ok(['domains', 'capabilities', 'eventsProduced', 'eventsConsumed', 'namespacesOwned'].every(k => m[k].length === 0) && !m.publicOrigin && !m.health && !m.ready, `retired ${m.id} offers nothing`);
++ }
++ const rt = services.get('realtime');
++ ok(rt.status === 'retired' && /ADR-005/.test(rt.notes) && /OpenVibe\.Events/.test(rt.notes), 'realtime is retired by ADR-005: realtime runs inside OpenVibe.Events');
++}
++
// ── Ids ──────────────────────────────────────────────────────────────────
for (const kind of ['user', 'guest', 'app', 'mod']) {
const id = ids.newId(kind);