openvibers/openvibe.sites Commits

Placeholders keep the exact "this page is a placeholder, nothing here is live yet" phrase

OP OpenVibers committed 24 Sept 2026 · 0c3e37c31b · 17 files, +25 −20

Other repositories detect a Sites placeholder by that phrase: Host docs/launch.md greps "this page is
a placeholder" and Network's requirement ledger greps "nothing here is live yet" on openvibe.tips, .vip,
.host, .news, .reviews, .deals, .coupons and .trade. The facts-based status line had dropped the second
half, which would have read as "launched" to those checks.

Every placeholder's status sentence now carries the whole phrase (one MARKER in build.js); the two
notices (realtime closed, status pointer) never do. test/build.test.js pins both.

Changes

ddiff --git a/build.js b/build.js
iindex 8b807c4..b97a153 100644
---- a/build.js
++++ b/build.js
@@@ -67,6 +67,9 @@ const STANDING = {
closed: { label: 'closed', repoStage: 'closed' },
pointer: { label: 'status', repoStage: 'pointer' },
};
++// The stable marker other repositories' checks grep for (Host docs/launch.md, Network's requirement
++// ledger): every placeholder says it, a notice never does.
++const MARKER = 'this page is a placeholder, nothing here is live yet';
const repoLink = (repo) => `<a href="https://github.com/OpenVibers/${esc(repo)}" rel="noopener"><code>OpenVibers/${esc(repo)}</code></a>`;
/** The hero's status sentence: what is true about the product, and what its public launch waits for. */
function statusText(site) {
@@@ -74,15 +77,15 @@ function statusText(site) {
const f = repoFacts(site);
const repo = site.plannedRepo ? repoLink(site.plannedRepo) : '<code>OpenVibe.Network</code>';
const waits = site.launch ? ` The public launch is waiting for ${esc(site.launch)}.` : '';
-- if (k === 'running') return `${repo} is built and its service runs on the network's host, but it is not public yet; this page is a placeholder.${waits}`;
-- if (k === 'code') return `${repo} has code, but nothing is deployed yet; this page is a placeholder.${waits}`;
++ if (k === 'running') return `${repo} is built and its service runs on the network's host, but it is not public yet: ${MARKER}.${waits}`;
++ if (k === 'code') return `${repo} has code, but nothing is deployed yet: ${MARKER}.${waits}`;
if (k === 'surface') {
const o = f.registry.origin;
-- return `${repo} is live at <a href="${esc(o)}/">${esc(o.replace(/^https?:\/\//, ''))}</a>; this subdomain is not routed to it yet, so it serves this placeholder.`;
++ return `${repo} is live at <a href="${esc(o)}/">${esc(o.replace(/^https?:\/\//, ''))}</a>; this subdomain is not routed to it yet: ${MARKER}.`;
}
if (k === 'pointer') return `${repo} publishes the status of every OpenVibe service at <a href="${esc(site.links[0][1])}">${esc(site.links[0][1].replace(/^https?:\/\//, ''))}</a>; this address points there.`;
if (k === 'closed') return `${repo} is closed and stays as a decision record; no product launches at this address.`;
-- return `${repo}: charter only, no code yet; this page is a placeholder.${waits}`;
++ return `${repo}: charter only, no code yet: ${MARKER}.${waits}`;
}
const today = new Date().toISOString().slice(0, 10);
// A page is first published once; rebuilding it later changes dateModified, never datePublished.
ddiff --git a/dist/admin.openvibe.network/index.html b/dist/admin.openvibe.network/index.html
iindex 9a4906f..61b12f1 100644
---- a/dist/admin.openvibe.network/index.html
++++ b/dist/admin.openvibe.network/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet, so it serves this placeholder. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet: this page is a placeholder, nothing here is live yet. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/ai.openvibe.network/index.html b/dist/ai.openvibe.network/index.html
iindex 59b0dff..9fcbd9e 100644
---- a/dist/ai.openvibe.network/index.html
++++ b/dist/ai.openvibe.network/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.AI" rel="noopener"><code>OpenVibers/OpenVibe.AI</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for a public API with its own access rules; today only other OpenVibe services call it. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.AI" rel="noopener"><code>OpenVibers/OpenVibe.AI</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for a public API with its own access rules; today only other OpenVibe services call it. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/api.openvibe.network/index.html b/dist/api.openvibe.network/index.html
iindex ff18311..f945b1b 100644
---- a/dist/api.openvibe.network/index.html
++++ b/dist/api.openvibe.network/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet, so it serves this placeholder. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet: this page is a placeholder, nothing here is live yet. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/auth.openvibe.network/index.html b/dist/auth.openvibe.network/index.html
iindex 867457e..399f143 100644
---- a/dist/auth.openvibe.network/index.html
++++ b/dist/auth.openvibe.network/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet, so it serves this placeholder. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet: this page is a placeholder, nothing here is live yet. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openre.stream/index.html b/dist/openre.stream/index.html
iindex d16dd13..9a683c5 100644
---- a/dist/openre.stream/index.html
++++ b/dist/openre.stream/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenRe.Stream" rel="noopener"><code>OpenVibers/OpenRe.Stream</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for the stream slots to move from OpenVibe.Live&#39;s ingest to OpenRe.Stream, one at a time; no stream uses it yet. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenRe.Stream" rel="noopener"><code>OpenVibers/OpenRe.Stream</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for the stream slots to move from OpenVibe.Live&#39;s ingest to OpenRe.Stream, one at a time; no stream uses it yet. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.chat/index.html b/dist/openvibe.chat/index.html
iindex 881ed96..cd38b13 100644
---- a/dist/openvibe.chat/index.html
++++ b/dist/openvibe.chat/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Chat" rel="noopener"><code>OpenVibers/OpenVibe.Chat</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for its own web client at this address; the service already runs the chat on OpenVibe.Live. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Chat" rel="noopener"><code>OpenVibers/OpenVibe.Chat</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for its own web client at this address; the service already runs the chat on OpenVibe.Live. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.coupons/index.html b/dist/openvibe.coupons/index.html
iindex d3eb2f4..b40c89b 100644
---- a/dist/openvibe.coupons/index.html
++++ b/dist/openvibe.coupons/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Coupons" rel="noopener"><code>OpenVibers/OpenVibe.Coupons</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for a person to verify a coupons source&#39;s terms and switch it on. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Coupons" rel="noopener"><code>OpenVibers/OpenVibe.Coupons</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for a person to verify a coupons source&#39;s terms and switch it on. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.deals/index.html b/dist/openvibe.deals/index.html
iindex 7e5d395..9ad2d15 100644
---- a/dist/openvibe.deals/index.html
++++ b/dist/openvibe.deals/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Deals" rel="noopener"><code>OpenVibers/OpenVibe.Deals</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for a person to verify a deals source&#39;s terms and switch it on. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Deals" rel="noopener"><code>OpenVibers/OpenVibe.Deals</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for a person to verify a deals source&#39;s terms and switch it on. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.host/index.html b/dist/openvibe.host/index.html
iindex e13e556..d7fbc63 100644
---- a/dist/openvibe.host/index.html
++++ b/dist/openvibe.host/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Host" rel="noopener"><code>OpenVibers/OpenVibe.Host</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for the owner&#39;s go on its launch checklist. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Host" rel="noopener"><code>OpenVibers/OpenVibe.Host</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for the owner&#39;s go on its launch checklist. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.news/index.html b/dist/openvibe.news/index.html
iindex 7b1e7e6..3fbaf6d 100644
---- a/dist/openvibe.news/index.html
++++ b/dist/openvibe.news/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.News" rel="noopener"><code>OpenVibers/OpenVibe.News</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for a person to verify a news source&#39;s terms and an editor to publish the first reviewed story. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.News" rel="noopener"><code>OpenVibers/OpenVibe.News</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for a person to verify a news source&#39;s terms and an editor to publish the first reviewed story. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.reviews/index.html b/dist/openvibe.reviews/index.html
iindex 07803d4..2f79d2f 100644
---- a/dist/openvibe.reviews/index.html
++++ b/dist/openvibe.reviews/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Reviews" rel="noopener"><code>OpenVibers/OpenVibe.Reviews</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for a person to verify a review source&#39;s terms and an editor to publish the first reviewed summary. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Reviews" rel="noopener"><code>OpenVibers/OpenVibe.Reviews</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for a person to verify a review source&#39;s terms and an editor to publish the first reviewed summary. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.tips/index.html b/dist/openvibe.tips/index.html
iindex 41ef22e..55d50a3 100644
---- a/dist/openvibe.tips/index.html
++++ b/dist/openvibe.tips/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Tips" rel="noopener"><code>OpenVibers/OpenVibe.Tips</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for the payments cutover to OpenVibe.Billing and a security review; tips keep working on OpenVibe.Live meanwhile. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Tips" rel="noopener"><code>OpenVibers/OpenVibe.Tips</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for the payments cutover to OpenVibe.Billing and a security review; tips keep working on OpenVibe.Live meanwhile. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.trade/index.html b/dist/openvibe.trade/index.html
iindex d6a6312..20c8e0e 100644
---- a/dist/openvibe.trade/index.html
++++ b/dist/openvibe.trade/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Trade" rel="noopener"><code>OpenVibers/OpenVibe.Trade</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for a verified data source and editors adding the first instruments. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.Trade" rel="noopener"><code>OpenVibers/OpenVibe.Trade</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for a verified data source and editors adding the first instruments. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/openvibe.vip/index.html b/dist/openvibe.vip/index.html
iindex 0e831a4..0438b46 100644
---- a/dist/openvibe.vip/index.html
++++ b/dist/openvibe.vip/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.VIP" rel="noopener"><code>OpenVibers/OpenVibe.VIP</code></a> is built and its service runs on the network's host, but it is not public yet; this page is a placeholder. The public launch is waiting for the payments cutover to OpenVibe.Billing; checkout stays closed until then. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>in development</b> · <a href="https://github.com/OpenVibers/OpenVibe.VIP" rel="noopener"><code>OpenVibers/OpenVibe.VIP</code></a> is built and its service runs on the network's host, but it is not public yet: this page is a placeholder, nothing here is live yet. The public launch is waiting for the payments cutover to OpenVibe.Billing; checkout stays closed until then. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/dist/themes.openvibe.network/index.html b/dist/themes.openvibe.network/index.html
iindex 25a5cd8..e649a02 100644
---- a/dist/themes.openvibe.network/index.html
++++ b/dist/themes.openvibe.network/index.html
@@@ -101,7 +101,7 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
<a class="btn" href="https://discord.gg/M6MuRUaeJj" rel="noopener"><i class="fa-brands fa-discord"></i> Follow the build</a>
</div>
-- <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet, so it serves this placeholder. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
++ <p class="status"><i class="fa-solid fa-clock" aria-hidden="true"></i> Status: <b>not routed yet</b> · <a href="https://github.com/OpenVibers/OpenVibe.Network" rel="noopener"><code>OpenVibers/OpenVibe.Network</code></a> is live at <a href="https://openvibe.network/">openvibe.network</a>; this subdomain is not routed to it yet: this page is a placeholder, nothing here is live yet. · as of 2026-09-24 · <a href="/status.json">status.json</a></p>
</header>
<section id="what">
ddiff --git a/test/build.test.js b/test/build.test.js
iindex 005ff2e..5ea4743 100644
---- a/test/build.test.js
++++ b/test/build.test.js
@@@ -26,7 +26,9 @@ for (const site of catalog.sites) {
pages++;
assert.match(html, /<title>[^<]+<\/title>/, `${d}: title`);
assert.match(html, new RegExp(`<link rel="canonical" href="https://${d.replace(/\./g, '\\.')}/?"`), `${d}: canonical`);
-- if (!site.kind) assert.match(html, /placeholder/i, `${d}: says it is a placeholder (never claim a product is live)`);
++ // The exact phrase other repositories' checks grep for (Host docs/launch.md, Network's requirement ledger).
++ if (!site.kind) assert.ok(html.includes('this page is a placeholder, nothing here is live yet'), `${d}: says it is a placeholder (never claim a product is live)`);
++ else assert.ok(!html.includes('nothing here is live yet'), `${d}: a notice is not a placeholder`);
assert.doesNotMatch(html, PRICING, `${d}: pricing copy`);
assert.doesNotMatch(html, UNBACKED, `${d}: claims a hosting product that does not exist`);
for (const m of html.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)) {