openvibers/openvibe.network Commits
Status: a library Network does not install says what it is (#523)
Changes
@@@ -171,7 +171,9 @@ function createEcosystemRegistry({ issuer, internalOverrides = {}, fetchImpl = g// What runs is decided by Network's exposure overlay, not the manifest's maturity label.const exp = exposureOf(m.id);if (exp.state === 'placeholder' || (exp.state === 'unknown' && m.status === 'placeholder')) { health.set(m.id, { status: 'not-running', reason: 'placeholder', checked_at: at() }); return; }-- if (exp.state === 'library') { health.set(m.id, { status: 'not-running', reason: `library, released ${exp.release}`, checked_at: at() }); return; }++ // A library Network does not install itself (openvibe-publishing) has no version here: say what it is instead of++ // "released undefined" (the status page, 2026-11-02).++ if (exp.state === 'library') { health.set(m.id, { status: 'not-running', reason: exp.release ? `library, released ${exp.release}` : 'library, installed by the services that use it', checked_at: at() }); return; }if (exp.state === 'repository') { health.set(m.id, { status: 'not-running', reason: 'repository, nothing to run', checked_at: at() }); return; }const readyPath = m.ready || readyPaths[m.id] || null;const healthPath = m.health || healthPaths[m.id] || null;@@@ -100,6 +100,8 @@ const ready = [200, { ready: true, status: 'ready', failed: [], degraded: [], chassert.strictEqual(by.ai.runtime.basis, 'ready');assert.strictEqual(by.sdk.runtime.status, 'not-running');assert.strictEqual(by.sdk.runtime.reason, `library, released v${require('openvibe-sdk/package.json').version}`);++ // A library Network does not install (openvibe-publishing) says what it is, never "released undefined".++ if (by.publishing) assert.strictEqual(by.publishing.runtime.reason, 'library, installed by the services that use it');assert.strictEqual(by.examples.runtime.reason, 'repository, nothing to run');// openvibe-contracts 0.78.0 removed the realtime manifest (ADR-005 closed OpenVibe.Realtime, never built)assert.ok(!('realtime' in by), 'realtime is gone from the exposure map, not a stale row');
@@ -171,7 +171,9 @@ function createEcosystemRegistry({ issuer, internalOverrides = {}, fetchImpl = g
@@ -171,7 +171,9 @@ function createEcosystemRegistry({ issuer, internalOverrides = {}, fetchImpl = g
// What runs is decided by Network's exposure overlay, not the manifest's maturity label.
// What runs is decided by Network's exposure overlay, not the manifest's maturity label.
const exp = exposureOf(m.id);
const exp = exposureOf(m.id);
if (exp.state === 'placeholder' || (exp.state === 'unknown' && m.status === 'placeholder')) { health.set(m.id, { status: 'not-running', reason: 'placeholder', checked_at: at() }); return; }
if (exp.state === 'placeholder' || (exp.state === 'unknown' && m.status === 'placeholder')) { health.set(m.id, { status: 'not-running', reason: 'placeholder', checked_at: at() }); return; }
- if (exp.state === 'library') { health.set(m.id, { status: 'not-running', reason: `library, released ${exp.release}`, checked_at: at() }); return; }
+ // A library Network does not install itself (openvibe-publishing) has no version here: say what it is instead of
+ // "released undefined" (the status page, 2026-11-02).
+ if (exp.state === 'library') { health.set(m.id, { status: 'not-running', reason: exp.release ? `library, released ${exp.release}` : 'library, installed by the services that use it', checked_at: at() }); return; }
if (exp.state === 'repository') { health.set(m.id, { status: 'not-running', reason: 'repository, nothing to run', checked_at: at() }); return; }
if (exp.state === 'repository') { health.set(m.id, { status: 'not-running', reason: 'repository, nothing to run', checked_at: at() }); return; }
const readyPath = m.ready || readyPaths[m.id] || null;
const readyPath = m.ready || readyPaths[m.id] || null;
const healthPath = m.health || healthPaths[m.id] || null;
const healthPath = m.health || healthPaths[m.id] || null;
@@ -100,6 +100,8 @@ const ready = [200, { ready: true, status: 'ready', failed: [], degraded: [], ch
@@ -100,6 +100,8 @@ const ready = [200, { ready: true, status: 'ready', failed: [], degraded: [], ch
assert.strictEqual(by.ai.runtime.basis, 'ready');
assert.strictEqual(by.ai.runtime.basis, 'ready');
assert.strictEqual(by.sdk.runtime.status, 'not-running');
assert.strictEqual(by.sdk.runtime.status, 'not-running');
assert.strictEqual(by.sdk.runtime.reason, `library, released v${require('openvibe-sdk/package.json').version}`);
assert.strictEqual(by.sdk.runtime.reason, `library, released v${require('openvibe-sdk/package.json').version}`);
+ // A library Network does not install (openvibe-publishing) says what it is, never "released undefined".
+ if (by.publishing) assert.strictEqual(by.publishing.runtime.reason, 'library, installed by the services that use it');
assert.strictEqual(by.examples.runtime.reason, 'repository, nothing to run');
assert.strictEqual(by.examples.runtime.reason, 'repository, nothing to run');
// openvibe-contracts 0.78.0 removed the realtime manifest (ADR-005 closed OpenVibe.Realtime, never built)
// openvibe-contracts 0.78.0 removed the realtime manifest (ADR-005 closed OpenVibe.Realtime, never built)
assert.ok(!('realtime' in by), 'realtime is gone from the exposure map, not a stale row');
assert.ok(!('realtime' in by), 'realtime is gone from the exposure map, not a stale row');