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
Changes
@@@ -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."}@@@ -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);
@@ -5,12 +5,12 @@
@@ -5,12 +5,12 @@
},
},
"id": "realtime",
"id": "realtime",
"name": "OpenVibe.Realtime",
"name": "OpenVibe.Realtime",
- "status": "placeholder",
+ "status": "retired",
"repository": "OpenVibers/OpenVibe.Realtime",
"repository": "OpenVibers/OpenVibe.Realtime",
"domains": [],
"domains": [],
"capabilities": [],
"capabilities": [],
"eventsProduced": [],
"eventsProduced": [],
"eventsConsumed": [],
"eventsConsumed": [],
"namespacesOwned": [],
"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."
}
}
@@ -305,6 +305,17 @@ for (const id of ['events.event.publish', 'events.event.read', 'events.subscript
@@ -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 ──────────────────────────────────────────────────────────────────
// ── Ids ──────────────────────────────────────────────────────────────────
for (const kind of ['user', 'guest', 'app', 'mod']) {
for (const kind of ['user', 'guest', 'app', 'mod']) {
const id = ids.newId(kind);
const id = ids.newId(kind);