openvibers/openvibe.network Commits
Roadmap baseline regenerated 2026-09-28 05:21 UTC after the no-fake-green rollout: 639 tables, 2453 routes, 112 call sites, 359 discrepancies, 6/7 exit criteria (EC7 waits for the host owner's hazard review). EC5 is now computed (nothing unobserved this run). Deploy drift: every service runs origin/main except Network's own baseline script change (2c1dacb, not part of the service); 4 more are behind only in documentation and tests. Every service pins openvibe-shared v1.25.0 and runs it.
Changes
@@@ -8,64 +8,64 @@ Deliverable 1: runtimes, ports, units, env files and repository state.| Service | Repo | Stage | Ports | Units | Env file | Deployed | Databases ||---|---|---|---|---|---|---|---|--| network | OpenVibe.Network | live | http 4000 | openvibe-network.service | /etc/openvibe/network.env | ddd87b6 | data/network.db |--| live | OpenVibe.Live | live | http 3000, rtmp 1935/9935, mediasoup 11000-11300/udp, jsmpegRelayTls 9710-9789 | openvibe-live.socket, openvibe-live.service | /etc/openvibe/live.env | b0cc2ef | data/live.db, data/analytics.db, data/rs-companion.db |--| media | OpenVibe.Media | live | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 6248363 | data/media.db |++| network | OpenVibe.Network | live | http 4000 | openvibe-network.service | /etc/openvibe/network.env | ac71bb4 | data/network.db |++| live | OpenVibe.Live | live | http 3000, rtmp 1935/9935, mediasoup 11000-11300/udp, jsmpegRelayTls 9710-9789 | openvibe-live.socket, openvibe-live.service | /etc/openvibe/live.env | 278cd40 | data/live.db, data/analytics.db, data/rs-companion.db |++| media | OpenVibe.Media | live | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 47b21bd | data/media.db || tools | OpenVibe.Tools | live | gateway 4001, maps 4010, food 4011, img 4012, yt 4013, audio 4014, text 4015, docs 4016 | openvibe-tools.service, openvibe-tools-maps.service, openvibe-tools-food.service, openvibe-tools-img.service, openvibe-tools-yt.service, openvibe-tools-audio.service, openvibe-tools-text.service, openvibe-tools-docs.service | /etc/openvibe/tools.env | e55469f | apps/<app>/data/analytics.db, apps/<app>/data/jobs.db || games | OpenVibe.Games | live | http 8000 | openvibe-games.service | /etc/openvibe/games.env | 51d8688 | data/world.db |--| community | OpenVibe.Community | live | http 4200 | openvibe-community.service | /etc/openvibe/community.env | 52d923a | /var/lib/openvibe-community/community.db |++| community | OpenVibe.Community | live | http 4200 | openvibe-community.service | /etc/openvibe/community.env | 581d805 | /var/lib/openvibe-community/community.db || sites | OpenVibe.Sites | placeholder-host | | - | - | 32464ec | none |--| events | OpenVibe.Events | live | http 4300 | openvibe-events.service | /etc/openvibe/events.env | f55f7eb | /var/lib/openvibe-events/events.db |--| chat | OpenVibe.Chat | live | http 4400 | openvibe-chat.service | /etc/openvibe/chat.env | 3aab730 | /var/lib/openvibe-chat/chat.db |--| openre | OpenRe.Stream | shadow | http 4500, rtmp 1936 | openre-api.service, openre-session-coordinator.service, [email protected], [email protected] | /etc/openvibe/openre.env | cf423e3 | /var/lib/openre/openre.db |--| billing | OpenVibe.Billing | shadow | http 4600 | openvibe-billing.service | /etc/openvibe/billing.env | 80f97aa | /var/lib/openvibe-billing/billing.db |--| tips | OpenVibe.Tips | loopback | http 4610 | openvibe-tips.service | /etc/openvibe/tips.env | 1e6bfbb | /var/lib/openvibe-tips/tips.db |--| vip | OpenVibe.VIP | loopback | http 4620 | openvibe-vip.service | /etc/openvibe/vip.env | 0fbcbb5 | /var/lib/openvibe-vip/vip.db |--| ai | OpenVibe.AI | live-internal | http 4700 | openvibe-ai.service | /etc/openvibe/ai.env | 549bed0 | /var/lib/openvibe-ai/ai.db |--| search | OpenVibe.Search | live | http 4710 | openvibe-search.service | /etc/openvibe/search.env | 8ed7667 | /var/lib/openvibe-search/search.db |--| sources | OpenVibe.Sources | loopback | http 4720 | openvibe-sources.service | /etc/openvibe/sources.env | 351383e | /var/lib/openvibe-sources/sources.db |--| wiki | OpenVibe.Wiki | live | http 4800 | openvibe-wiki.service | /etc/openvibe/wiki.env | 32a26ef | /var/lib/openvibe-wiki/wiki.db |--| blog | OpenVibe.Blog | live | http 4810 | openvibe-blog.service | /etc/openvibe/blog.env | 21d537c | /var/lib/openvibe-blog/blog.db |--| news | OpenVibe.News | loopback | http 4820 | openvibe-news.service | /etc/openvibe/news.env | 8ab47a6 | /var/lib/openvibe-news/news.db |--| reviews | OpenVibe.Reviews | loopback | http 4830 | openvibe-reviews.service | /etc/openvibe/reviews.env | 1cff36b | /var/lib/openvibe-reviews/reviews.db |--| deals | OpenVibe.Deals | loopback | http 4840 | openvibe-deals.service | /etc/openvibe/deals.env | fa0582d | /var/lib/openvibe-deals/deals.db |--| coupons | OpenVibe.Coupons | loopback | http 4850 | openvibe-coupons.service | /etc/openvibe/coupons.env | 64835d2 | /var/lib/openvibe-coupons/coupons.db |--| trade | OpenVibe.Trade | loopback | http 4860 | openvibe-trade.service | /etc/openvibe/trade.env | 4658447 | /var/lib/openvibe-trade/trade.db |--| codes | OpenVibe.Codes | live | http 4900 | openvibe-codes.service | /etc/openvibe/codes.env | 64d8feb | /var/lib/openvibe-codes/codes.db |--| host | OpenVibe.Host | loopback | http 4910 | openvibe-host.service, openvibe-backup.timer, openvibe-backup.service | /etc/openvibe/host.env | 2b63389 | /var/lib/openvibe-host-api/host.db |++| events | OpenVibe.Events | live | http 4300 | openvibe-events.service | /etc/openvibe/events.env | 7c575cd | /var/lib/openvibe-events/events.db |++| chat | OpenVibe.Chat | live | http 4400 | openvibe-chat.service | /etc/openvibe/chat.env | 4c517a5 | /var/lib/openvibe-chat/chat.db |++| openre | OpenRe.Stream | shadow | http 4500, rtmp 1936 | openre-api.service, openre-session-coordinator.service, [email protected], [email protected] | /etc/openvibe/openre.env | d9f4240 | /var/lib/openre/openre.db |++| billing | OpenVibe.Billing | shadow | http 4600 | openvibe-billing.service | /etc/openvibe/billing.env | 1f9df56 | /var/lib/openvibe-billing/billing.db |++| tips | OpenVibe.Tips | loopback | http 4610 | openvibe-tips.service | /etc/openvibe/tips.env | 3cc8c83 | /var/lib/openvibe-tips/tips.db |++| vip | OpenVibe.VIP | loopback | http 4620 | openvibe-vip.service | /etc/openvibe/vip.env | 63f46fa | /var/lib/openvibe-vip/vip.db |++| ai | OpenVibe.AI | live-internal | http 4700 | openvibe-ai.service | /etc/openvibe/ai.env | f6fdbc9 | /var/lib/openvibe-ai/ai.db |++| search | OpenVibe.Search | live | http 4710 | openvibe-search.service | /etc/openvibe/search.env | 04f9fd4 | /var/lib/openvibe-search/search.db |++| sources | OpenVibe.Sources | loopback | http 4720 | openvibe-sources.service | /etc/openvibe/sources.env | 6e1185e | /var/lib/openvibe-sources/sources.db |++| wiki | OpenVibe.Wiki | live | http 4800 | openvibe-wiki.service | /etc/openvibe/wiki.env | a81573f | /var/lib/openvibe-wiki/wiki.db |++| blog | OpenVibe.Blog | live | http 4810 | openvibe-blog.service | /etc/openvibe/blog.env | 9f339e3 | /var/lib/openvibe-blog/blog.db |++| news | OpenVibe.News | loopback | http 4820 | openvibe-news.service | /etc/openvibe/news.env | cb6d79e | /var/lib/openvibe-news/news.db |++| reviews | OpenVibe.Reviews | loopback | http 4830 | openvibe-reviews.service | /etc/openvibe/reviews.env | 8416fcb | /var/lib/openvibe-reviews/reviews.db |++| deals | OpenVibe.Deals | loopback | http 4840 | openvibe-deals.service | /etc/openvibe/deals.env | 0bf25e2 | /var/lib/openvibe-deals/deals.db |++| coupons | OpenVibe.Coupons | loopback | http 4850 | openvibe-coupons.service | /etc/openvibe/coupons.env | 168262d | /var/lib/openvibe-coupons/coupons.db |++| trade | OpenVibe.Trade | loopback | http 4860 | openvibe-trade.service | /etc/openvibe/trade.env | d515e46 | /var/lib/openvibe-trade/trade.db |++| codes | OpenVibe.Codes | live | http 4900 | openvibe-codes.service | /etc/openvibe/codes.env | 1246445 | /var/lib/openvibe-codes/codes.db |++| host | OpenVibe.Host | loopback | http 4910 | openvibe-host.service, openvibe-backup.timer, openvibe-backup.service | /etc/openvibe/host.env | 02c68f6 | /var/lib/openvibe-host-api/host.db || examples | OpenVibe.Examples | sample | | - | - | - | none |## Scanned repositories| Repo | HEAD | origin/main | Source files | LOC | Test files | CI | Routes | Tables | WS servers | Timers/jobs | TODO(contract) ||---|---|---|---|---|---|---|---|---|---|---|---|--| OpenVibe.Live | 03f49b7 | 03f49b7 | 221 | 75126 | 158 | yes | 648 | 126 | 8 | 57 | 14 |--| OpenVibe.Network | c022f86 | c022f86 | 103 | 21114 | 77 | yes | 355 | 70 | 0 | 14 | 3 |--| OpenVibe.Shared | b5a9bd7 | b5a9bd7 | 58 | 15503 | 39 | yes | 2 | 2 | 0 | 8 | 0 |--| OpenVibe.Media | 14cac06 | 14cac06 | 79 | 20861 | 67 | yes | 144 | 34 | 0 | 16 | 0 |--| OpenVibe.Tools | 4f4ed6e | 4f4ed6e | 176 | 30522 | 61 | yes | 125 | 7 | 0 | 18 | 0 |--| OpenVibe.Community | 2da3501 | 2da3501 | 66 | 12037 | 61 | yes | 180 | 35 | 0 | 9 | 0 |++| OpenVibe.Live | 7fd7bea | 7fd7bea | 221 | 75127 | 158 | yes | 648 | 126 | 8 | 57 | 14 |++| OpenVibe.Network | 2c1dacb | 2c1dacb | 104 | 21166 | 78 | yes | 355 | 70 | 0 | 14 | 3 |++| OpenVibe.Shared | 919c108 | 919c108 | 59 | 15638 | 40 | yes | 2 | 2 | 0 | 8 | 0 |++| OpenVibe.Media | 47b21bd | 47b21bd | 79 | 20902 | 68 | yes | 144 | 34 | 0 | 16 | 0 |++| OpenVibe.Tools | 9339e15 | 9339e15 | 176 | 30522 | 61 | yes | 125 | 7 | 0 | 18 | 0 |++| OpenVibe.Community | 581d805 | 581d805 | 66 | 12037 | 61 | yes | 180 | 35 | 0 | 9 | 0 || OpenVibe.Games | eb2d008 | eb2d008 | 126 | 24425 | 82 | yes | 29 | 13 | 2 | 4 | 0 || OpenVibe.Sites | 304e8b1 | 304e8b1 | 1 | 555 | 2 | yes | 0 | 0 | 0 | 0 | 0 |--| OpenVibe.Events | 19919ec | 19919ec | 20 | 3357 | 22 | yes | 18 | 8 | 0 | 4 | 0 |--| OpenVibe.Chat | d87c8d3 | d87c8d3 | 53 | 16898 | 48 | yes | 121 | 42 | 2 | 12 | 0 |--| OpenRe.Stream | c77ec2a | c77ec2a | 36 | 4806 | 21 | yes | 38 | 13 | 0 | 2 | 0 |--| OpenVibe.Billing | f24684b | f24684b | 38 | 5452 | 22 | yes | 56 | 19 | 0 | 3 | 0 |--| OpenVibe.Tips | 13986b5 | 13986b5 | 30 | 5346 | 17 | yes | 62 | 17 | 0 | 3 | 0 |--| OpenVibe.VIP | 95b3e19 | 95b3e19 | 30 | 4293 | 14 | yes | 44 | 13 | 0 | 2 | 0 |--| OpenVibe.AI | 6c8b833 | 6c8b833 | 44 | 7919 | 26 | yes | 58 | 19 | 0 | 4 | 0 |--| OpenVibe.Search | e8511d8 | e8511d8 | 18 | 2868 | 14 | yes | 21 | 11 | 0 | 4 | 0 |--| OpenVibe.Sources | 1670853 | 1670853 | 24 | 3100 | 13 | yes | 16 | 8 | 0 | 4 | 0 |--| OpenVibe.Wiki | 3302540 | 3302540 | 23 | 4751 | 35 | yes | 76 | 10 | 0 | 3 | 0 |--| OpenVibe.Blog | 8a7f8eb | 8a7f8eb | 34 | 5185 | 29 | yes | 64 | 10 | 0 | 3 | 0 |--| OpenVibe.News | 97dae43 | 97dae43 | 34 | 5251 | 19 | yes | 51 | 13 | 0 | 1 | 0 |--| OpenVibe.Reviews | c87b344 | c87b344 | 23 | 4792 | 17 | yes | 70 | 14 | 0 | 2 | 0 |--| OpenVibe.Deals | 533450f | 533450f | 36 | 4980 | 17 | yes | 58 | 15 | 0 | 1 | 0 |--| OpenVibe.Coupons | b91cd79 | b91cd79 | 29 | 4289 | 16 | yes | 46 | 12 | 0 | 2 | 0 |--| OpenVibe.Trade | 273bce7 | 273bce7 | 37 | 4562 | 16 | yes | 7 | 10 | 0 | 2 | 0 |--| OpenVibe.Codes | 64d8feb | 64d8feb | 32 | 5072 | 34 | yes | 107 | 7 | 0 | 0 | 0 |--| OpenVibe.Host | 6d2aaaa | 6d2aaaa | 68 | 11899 | 48 | yes | 57 | 11 | 0 | 1 | 0 |--| OpenVibe.Examples | 92eb7c3 | 92eb7c3 | 11 | 1604 | 16 | yes | 0 | 1 | 0 | 0 | 0 |++| OpenVibe.Events | 7c575cd | 7c575cd | 20 | 3357 | 22 | yes | 18 | 8 | 0 | 4 | 0 |++| OpenVibe.Chat | 4c517a5 | 4c517a5 | 53 | 16898 | 48 | yes | 121 | 42 | 2 | 12 | 0 |++| OpenRe.Stream | d9f4240 | d9f4240 | 36 | 4834 | 21 | yes | 38 | 13 | 0 | 2 | 0 |++| OpenVibe.Billing | 1f9df56 | 1f9df56 | 38 | 5452 | 22 | yes | 56 | 19 | 0 | 3 | 0 |++| OpenVibe.Tips | 3cc8c83 | 3cc8c83 | 30 | 5346 | 17 | yes | 62 | 17 | 0 | 3 | 0 |++| OpenVibe.VIP | 63f46fa | 63f46fa | 30 | 4293 | 14 | yes | 44 | 13 | 0 | 2 | 0 |++| OpenVibe.AI | f6fdbc9 | f6fdbc9 | 44 | 7919 | 26 | yes | 58 | 19 | 0 | 4 | 0 |++| OpenVibe.Search | 04f9fd4 | 04f9fd4 | 18 | 2868 | 14 | yes | 21 | 11 | 0 | 4 | 0 |++| OpenVibe.Sources | 6e1185e | 6e1185e | 24 | 3100 | 13 | yes | 16 | 8 | 0 | 4 | 0 |++| OpenVibe.Wiki | a81573f | a81573f | 23 | 4751 | 35 | yes | 76 | 10 | 0 | 3 | 0 |++| OpenVibe.Blog | 9f339e3 | 9f339e3 | 34 | 5185 | 29 | yes | 64 | 10 | 0 | 3 | 0 |++| OpenVibe.News | cb6d79e | cb6d79e | 34 | 5252 | 19 | yes | 51 | 13 | 0 | 1 | 0 |++| OpenVibe.Reviews | 8416fcb | 8416fcb | 23 | 4792 | 17 | yes | 70 | 14 | 0 | 2 | 0 |++| OpenVibe.Deals | 0bf25e2 | 0bf25e2 | 36 | 4980 | 17 | yes | 58 | 15 | 0 | 1 | 0 |++| OpenVibe.Coupons | 168262d | 168262d | 29 | 4289 | 16 | yes | 46 | 12 | 0 | 2 | 0 |++| OpenVibe.Trade | d515e46 | d515e46 | 37 | 4562 | 16 | yes | 7 | 10 | 0 | 2 | 0 |++| OpenVibe.Codes | 1246445 | 1246445 | 32 | 5072 | 34 | yes | 107 | 7 | 0 | 0 | 0 |++| OpenVibe.Host | 02c68f6 | 02c68f6 | 68 | 11899 | 48 | yes | 57 | 11 | 0 | 1 | 0 |++| OpenVibe.Examples | 058c71a | 058c71a | 11 | 1604 | 16 | yes | 0 | 1 | 0 | 0 | 0 |LOC counts non-test source files in the scanned directories only (`server/`, `apps/`, `packages/`), not frontend assets.@@@ -76,38 +76,38 @@ LOC counts non-test source files in the scanned directories only (`server/`, `ap|---|---|---|---|---|---|| AFResume | PUBLIC | - | 2026-09-26 | 23430 KB | AlexFrison.net || BreakRoomSimulator | PUBLIC | - | 2026-09-21 | 2517 KB | Simulator.Rest - The most realistic break room simulator to ever exist |--| OpenRe.Stream | PUBLIC | alpha | 2026-09-28 | 433 KB | Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health. |--| OpenVibe.AI | PUBLIC | alpha | 2026-09-28 | 1033 KB | Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product. |--| OpenVibe.Billing | PUBLIC | alpha | 2026-09-28 | 597 KB | The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts. |--| OpenVibe.Blog | PUBLIC | alpha | 2026-09-28 | 722 KB | The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds. |--| OpenVibe.Chat | PUBLIC | alpha | 2026-09-28 | 977 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. |--| OpenVibe.Codes | PUBLIC | alpha | 2026-09-28 | 814 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. |--| OpenVibe.Community | PUBLIC | alpha | 2026-09-28 | 1778 KB | |--| OpenVibe.Contracts | PUBLIC | alpha | 2026-09-28 | 3315 KB | Machine-readable contracts for the whole OpenVibe network. |--| OpenVibe.Coupons | PUBLIC | alpha | 2026-09-28 | 462 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. |--| OpenVibe.Deals | PUBLIC | alpha | 2026-09-28 | 493 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. |--| OpenVibe.Events | PUBLIC | alpha | 2026-09-28 | 550 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. |--| OpenVibe.Examples | PUBLIC | alpha | 2026-09-28 | 320 KB | Executable public integration examples, tested in CI against the platform. |--| OpenVibe.Extensions | PUBLIC | alpha | 2026-09-25 | 58 KB | First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023). |++| OpenRe.Stream | PUBLIC | alpha | 2026-09-28 | 541 KB | Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health. |++| OpenVibe.AI | PUBLIC | alpha | 2026-09-28 | 1037 KB | Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product. |++| OpenVibe.Billing | PUBLIC | alpha | 2026-09-28 | 680 KB | The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts. |++| OpenVibe.Blog | PUBLIC | alpha | 2026-09-28 | 756 KB | The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds. |++| OpenVibe.Chat | PUBLIC | alpha | 2026-09-28 | 981 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. |++| OpenVibe.Codes | PUBLIC | alpha | 2026-09-28 | 872 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. |++| OpenVibe.Community | PUBLIC | alpha | 2026-09-28 | 1888 KB | |++| OpenVibe.Contracts | PUBLIC | alpha | 2026-09-28 | 3357 KB | Machine-readable contracts for the whole OpenVibe network. |++| OpenVibe.Coupons | PUBLIC | alpha | 2026-09-28 | 496 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. |++| OpenVibe.Deals | PUBLIC | alpha | 2026-09-28 | 527 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. |++| OpenVibe.Events | PUBLIC | alpha | 2026-09-28 | 627 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. |++| OpenVibe.Examples | PUBLIC | alpha | 2026-09-28 | 329 KB | Executable public integration examples, tested in CI against the platform. |++| OpenVibe.Extensions | PUBLIC | alpha | 2026-09-28 | 61 KB | First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023). || OpenVibe.Games | PUBLIC | stable | 2026-09-28 | 5693 KB | |--| OpenVibe.Host | PUBLIC | alpha | 2026-09-28 | 1384 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |--| OpenVibe.Live | PUBLIC | stable | 2026-09-28 | 9109 KB | |--| OpenVibe.Media | PUBLIC | beta | 2026-09-28 | 2022 KB | |--| OpenVibe.Network | PUBLIC | stable | 2026-09-28 | 3471 KB | |--| OpenVibe.News | PUBLIC | alpha | 2026-09-28 | 466 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. |--| OpenVibe.Publishing | PUBLIC | alpha | 2026-09-28 | 248 KB | Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority. |++| OpenVibe.Host | PUBLIC | alpha | 2026-09-28 | 1479 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |++| OpenVibe.Live | PUBLIC | stable | 2026-09-28 | 8547 KB | |++| OpenVibe.Media | PUBLIC | beta | 2026-09-28 | 2183 KB | |++| OpenVibe.Network | PUBLIC | stable | 2026-09-28 | 3661 KB | |++| OpenVibe.News | PUBLIC | alpha | 2026-09-28 | 575 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. |++| OpenVibe.Publishing | PUBLIC | alpha | 2026-09-28 | 271 KB | Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority. || OpenVibe.Realtime | PUBLIC | closed (no code) | 2026-09-25 | 16 KB | Archived: browser realtime runs in OpenVibe.Events (/realtime/stream). Decision record for ADR-005. |--| OpenVibe.Reviews | PUBLIC | alpha | 2026-09-28 | 501 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |--| OpenVibe.SDK | PUBLIC | alpha | 2026-09-28 | 706 KB | Supported browser and server clients for the OpenVibe platform. |--| OpenVibe.Search | PUBLIC | alpha | 2026-09-28 | 318 KB | Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation. |--| OpenVibe.Shared | PUBLIC | alpha | 2026-09-28 | 1084 KB | Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders. |--| OpenVibe.Sites | PUBLIC | stable | 2026-09-28 | 967 KB | Static front pages for OpenVibe domains that are not full apps yet |--| OpenVibe.Sources | PUBLIC | alpha | 2026-09-28 | 309 KB | Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states. |--| OpenVibe.Tips | PUBLIC | alpha | 2026-09-28 | 563 KB | Creator support: tips, goals, paid messages, TTS and media requests, overlays. |--| OpenVibe.Tools | PUBLIC | stable | 2026-09-28 | 2632 KB | |--| OpenVibe.Trade | PUBLIC | alpha | 2026-09-28 | 418 KB | Informational watchlists, sourced market context and alerts. No custody, no order execution. |--| OpenVibe.VIP | PUBLIC | alpha | 2026-09-28 | 510 KB | Memberships: plans, perks and benefits recognised across every OpenVibe site. |--| OpenVibe.Wiki | PUBLIC | alpha | 2026-09-28 | 754 KB | Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed. |++| OpenVibe.Reviews | PUBLIC | alpha | 2026-09-28 | 591 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |++| OpenVibe.SDK | PUBLIC | alpha | 2026-09-28 | 733 KB | Supported browser and server clients for the OpenVibe platform. |++| OpenVibe.Search | PUBLIC | alpha | 2026-09-28 | 340 KB | Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation. |++| OpenVibe.Shared | PUBLIC | alpha | 2026-09-28 | 1260 KB | Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders. |++| OpenVibe.Sites | PUBLIC | stable | 2026-09-28 | 970 KB | Static front pages for OpenVibe domains that are not full apps yet |++| OpenVibe.Sources | PUBLIC | alpha | 2026-09-28 | 369 KB | Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states. |++| OpenVibe.Tips | PUBLIC | alpha | 2026-09-28 | 583 KB | Creator support: tips, goals, paid messages, TTS and media requests, overlays. |++| OpenVibe.Tools | PUBLIC | stable | 2026-09-28 | 2703 KB | |++| OpenVibe.Trade | PUBLIC | alpha | 2026-09-28 | 449 KB | Informational watchlists, sourced market context and alerts. No custody, no order execution. |++| OpenVibe.VIP | PUBLIC | alpha | 2026-09-28 | 525 KB | Memberships: plans, perks and benefits recognised across every OpenVibe site. |++| OpenVibe.Wiki | PUBLIC | alpha | 2026-09-28 | 787 KB | Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed. || powerchat-devapp-demo | PUBLIC | - | 2026-09-23 | 200 KB | || Source.OpenVibe.Games | PUBLIC | - | 2026-09-21 | 20385 KB | OpenVibe: Source Game |@@@ -11,7 +11,7 @@ Deliverable 2: every table declared in code or present in production, with curre| /opt/openvibe.blog/data/blog.db | 401 KB | 20 || /opt/openvibe.community/data/community.db | 258 KB | 21 || /opt/openvibe.games/data/legacy-import/world-before-20260923T184930Z.db | 193 KB | 13 |--| /opt/openvibe.games/data/world.db | 610 KB | 15 |++| /opt/openvibe.games/data/world.db | 635 KB | 15 || /opt/openvibe.live/shared/data/analytics.db | 525.4 MB | 6 || /opt/openvibe.live/shared/data/backups/analytics-pre-adr021-2026-09-23.db | 1.76 GB | 6 || /opt/openvibe.live/shared/data/backups/live-20260926-072748.db | 284.0 MB | 161 |@@@ -20,12 +20,13 @@ Deliverable 2: every table declared in code or present in production, with curre| /opt/openvibe.live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db | 284.7 MB | 162 || /opt/openvibe.live/shared/data/hobo.db | 0 B | 0 || /opt/openvibe.live/shared/data/live-before-rs-slots-20260924T0153Z.db | 279.2 MB | 151 |--| /opt/openvibe.live/shared/data/live.db | 284.7 MB | 162 |++| /opt/openvibe.live/shared/data/live.db | 284.7 MB | 163 || /opt/openvibe.live/shared/data/openvibe.db | 0 B | 0 || /opt/openvibe.live/shared/data/rs-companion.db | 8.6 MB | 33 || /opt/openvibe.media/data/backups/owner-subject-20260923.media.db | 9.5 MB | 23 || /opt/openvibe.media/data/media.db | 11.7 MB | 36 || /opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db | 11.3 MB | 27 |++| /opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db | 11.7 MB | 36 || /opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db | 292.4 MB | 66 || /opt/openvibe.network/data/backups/network-pre-follows-20260926.db | 292.1 MB | 63 || /opt/openvibe.network/data/network-pre-refresh-hash-2026-09-24.db | 279.1 MB | 52 |@@@ -59,8 +60,8 @@ Deliverable 2: every table declared in code or present in production, with curre| /opt/openvibe.tools/backups/analytics-2026-09-23/text.analytics.db | 9.5 MB | 6 || /opt/openvibe.tools/backups/analytics-2026-09-23/yt.analytics.db | 975 KB | 6 || /var/lib/openre/openre.db | 209 KB | 14 |--| /var/lib/openvibe-ai/ai.db | 115.8 MB | 20 |--| /var/lib/openvibe-billing/billing.db | 831 KB | 19 |++| /var/lib/openvibe-ai/ai.db | 118.6 MB | 20 |++| /var/lib/openvibe-billing/billing.db | 840 KB | 19 || /var/lib/openvibe-billing/live-snapshot-202609230121.db | 279.2 MB | 146 || /var/lib/openvibe-blog/blog.db | 1.9 MB | 24 || /var/lib/openvibe-chat/chat.db | 25.3 MB | 42 |@@@ -69,16 +70,16 @@ Deliverable 2: every table declared in code or present in production, with curre| /var/lib/openvibe-chat/live-snapshot-0159.db | 279.2 MB | 147 || /var/lib/openvibe-chat/rehearsal.db | 360 KB | 30 || /var/lib/openvibe-codes/codes.db | 111 KB | 7 |--| /var/lib/openvibe-community/community.db | 5.3 MB | 36 |++| /var/lib/openvibe-community/community.db | 5.5 MB | 36 || /var/lib/openvibe-community/community.pre-c24-20260925T185117Z.db | 2.2 MB | 29 || /var/lib/openvibe-community/community.pre-c24b-20260925T185400Z.db | 2.2 MB | 29 || /var/lib/openvibe-community/community.pre-c24c-20260925T185425Z.db | 2.2 MB | 29 || /var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db | 2.0 MB | 20 || /var/lib/openvibe-coupons/coupons.db | 197 KB | 14 || /var/lib/openvibe-deals/deals.db | 266 KB | 19 |--| /var/lib/openvibe-events/events.db | 23.5 MB | 8 |++| /var/lib/openvibe-events/events.db | 23.9 MB | 8 || /var/lib/openvibe-host-api/host.db | 160 KB | 12 |--| /var/lib/openvibe-news/news.db | 508 KB | 23 |++| /var/lib/openvibe-news/news.db | 512 KB | 23 || /var/lib/openvibe-reviews/reviews.db | 311 KB | 23 || /var/lib/openvibe-search/search.db | 13.3 MB | 21 || /var/lib/openvibe-sources/sources.db | 106 KB | 8 |@@@ -255,7 +256,7 @@ Deliverable 2: every table declared in code or present in production, with curre| dev_usage_windows | server/developer/usage.js:50 | network.db | OpenVibe.Network | keep | W1 (module split) || email_delivery_log | server/db/database.js:222 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) || email_verification_tokens | server/db/database.js:438 | network.db | OpenVibe.Network | keep | W1 (module split) |--| follow_import_holds | server/identity/follows.js:57 | network.db | OpenVibe.Network | keep | W1 (module split) |++| follow_import_holds | server/identity/follows.js:63 | network.db | OpenVibe.Network | keep | W1 (module split) || follows | server/db/database.js:306 | network.db | OpenVibe.Network | keep | W1 (module split) || frame_cache | server/frame/service.js:68 | network.db | OpenVibe.Network | keep | W1 (module split) || frame_hits | server/frame/service.js:70 | network.db | OpenVibe.Network | keep | W1 (module split) |@@@ -288,7 +289,7 @@ Deliverable 2: every table declared in code or present in production, with curre| url_registry | server/db/database.js:165, server/url-registry.js:7 | network.db | OpenVibe.Network | keep | W1 (module split) || user_blocks | server/identity/blocks.js:41 | network.db | OpenVibe.Network | keep | W1 (module split) || user_effects | server/db/database.js:295 | network.db | OpenVibe.Network | keep | W1 (module split) |--| user_follows | server/identity/follows.js:42 | network.db | OpenVibe.Network | keep | W1 (module split) |++| user_follows | server/identity/follows.js:48 | network.db | OpenVibe.Network | keep | W1 (module split) || user_history | server/history/routes.js:26 | network.db | OpenVibe.Network | keep | W1 (module split) || user_module_retirements | server/identity/modules.js:91 | network.db | OpenVibe.Network | keep | W1 (module split) || user_module_revisions | server/identity/modules.js:84 | network.db | OpenVibe.Network | keep | W1 (module split) |@@@ -497,8 +497,8 @@ Owner = the repository whose code answers the route; target = the authority it b| DELETE | /api/streams/:id | server/streaming/routes.js:2166 | | keep || GET | /api/streams/:id | server/streaming/routes.js:1923 | | keep || PUT | /api/streams/:id | server/streaming/routes.js:2115 | | keep |--| GET | /api/streams/:id/call | server/streaming/routes.js:2491 | | keep |--| PUT | /api/streams/:id/call | server/streaming/routes.js:2452 | | keep |++| GET | /api/streams/:id/call | server/streaming/routes.js:2492 | | keep |++| PUT | /api/streams/:id/call | server/streaming/routes.js:2453 | | keep || GET | /api/streams/:id/endpoint | server/streaming/routes.js:2213 | | keep || POST | /api/streams/:id/follow | server/streaming/routes.js:2354 | | keep || POST | /api/streams/:id/heartbeat | server/streaming/routes.js:2311 | | keep |@@@ -511,7 +511,7 @@ Owner = the repository whose code answers the route; target = the authority it b| PUT | /api/streams/channel/:username/about | server/streaming/routes.js:808 | | keep || GET | /api/streams/channel/:username/bio-en | server/streaming/routes.js:789 | | keep || GET | /api/streams/channel/:username/clips-taken | server/streaming/routes.js:595 | | keep |--| POST | /api/streams/channel/:username/follow | server/streaming/routes.js:2402 | | keep |++| POST | /api/streams/channel/:username/follow | server/streaming/routes.js:2403 | | keep || GET | /api/streams/channel/:username/game | server/streaming/routes.js:1020 | | keep || GET | /api/streams/channel/:username/live | server/streaming/routes.js:639 | | keep || GET | /api/streams/channel/:username/popular | server/streaming/routes.js:569 | | keep |@@@ -532,7 +532,7 @@ Owner = the repository whose code answers the route; target = the authority it b| GET | /api/streams/recent | server/streaming/routes.js:1188 | | keep || GET | /api/streams/recent-vods | server/streaming/routes.js:1259 | | keep || GET | /api/streams/recently-online | server/streaming/routes.js:1205 | | keep |--| GET | /api/streams/rtmp-proxy/:streamId.flv | server/streaming/routes.js:2512 | | keep |++| GET | /api/streams/rtmp-proxy/:streamId.flv | server/streaming/routes.js:2513 | | keep || GET | /api/streams/setup-progress | server/streaming/routes.js:1586 | | keep || GET | /api/streams/voice-channels | server/streaming/routes.js:1289 | | keep || POST | /api/streams/voice-channels | server/streaming/routes.js:1310 | | keep |@@@ -727,12 +727,12 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /:id/cancel | server/identity/account-data.js:565 | | keep || POST | /:id/dismiss | server/notifications/routes.js:100 | | keep || POST | /:id/read | server/notifications/routes.js:67 | | keep |--| GET | /.well-known/openvibe | server/registry/ecosystem.js:317 | | keep |--| GET | /.well-known/web-identity | server/index.js:755 | | keep |++| GET | /.well-known/openvibe | server/registry/ecosystem.js:326 | | keep |++| GET | /.well-known/web-identity | server/index.js:757 | | keep || POST | /account-deletions/:id/confirmations | server/identity/account-data.js:547 | | keep || POST | /account-exports/:id/parts | server/identity/account-data.js:539 | | keep || POST | /admin | server/setup/routes.js:114 | | keep |--| GET | /api/.well-known/jwks | server/index.js:500 | | keep |++| GET | /api/.well-known/jwks | server/index.js:502 | | keep || GET | /api/admin/domains | server/domains/routes.js:176 | | keep || GET | /api/admin/domains | server/domains/routes.js:197 | | keep || POST | /api/admin/domains | server/domains/routes.js:224 | | keep |@@@ -759,7 +759,7 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /api/admin/mods/:id/revoke | server/identity/mod-principals.js:186 | | keep || POST | /api/admin/mods/:id/revoke | server/identity/mod-principals.js:210 | | keep || GET | /api/admin/operator-checklist | server/admin/operator-checklist.js:70 | | keep |--| GET | /api/admin/ssh-info | server/index.js:627 | | keep |++| GET | /api/admin/ssh-info | server/index.js:629 | | keep || GET | /api/admin/themes | server/themes/routes.js:64 | | keep || GET | /api/admin/themes | server/themes/routes.js:233 | | keep || POST | /api/admin/themes | server/themes/routes.js:217 | | keep |@@@ -801,8 +801,8 @@ Owner = the repository whose code answers the route; target = the authority it b| GET | /api/auth/users/:id/card | server/auth/routes.js:777 | | keep || DELETE | /api/auth/users/:id/follow | server/auth/routes.js:860 | | keep || POST | /api/auth/users/:id/follow | server/auth/routes.js:829 | | keep |--| GET | /api/brand | server/index.js:529 | | keep |--| GET | /api/catalog.json | server/index.js:593 | | keep |++| GET | /api/brand | server/index.js:531 | | keep |++| GET | /api/catalog.json | server/index.js:595 | | keep || GET | /api/chrome | server/frame/service.js:178 | | keep || POST | /api/chrome/hit | server/frame/service.js:191 | | keep || GET | /api/domains | server/domains/routes.js:176 | | keep |@@@ -814,7 +814,7 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /api/domains/check | server/domains/routes.js:217 | | keep || GET | /api/frame | server/frame/service.js:178 | | keep || POST | /api/frame/hit | server/frame/service.js:191 | | keep |--| GET | /api/health | server/index.js:515 | | keep |++| GET | /api/health | server/index.js:517 | | keep || DELETE | /api/history | server/history/routes.js:143 | | keep || GET | /api/history | server/history/routes.js:92 | | keep || POST | /api/history | server/history/routes.js:108 | | keep |@@@ -836,8 +836,8 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /api/push/subscribe | server/push/routes.js:17 | | keep || POST | /api/push/unsubscribe | server/push/routes.js:29 | | keep || GET | /api/push/vapid-key | server/push/routes.js:10 | | keep |--| GET | /api/ready | server/index.js:525 | | keep |--| GET | /api/sso/targets | server/index.js:575 | | keep |++| GET | /api/ready | server/index.js:527 | | keep |++| GET | /api/sso/targets | server/index.js:577 | | keep || GET | /api/themes | server/themes/routes.js:64 | | keep || GET | /api/themes | server/themes/routes.js:233 | | keep || POST | /api/themes | server/themes/routes.js:217 | | keep |@@@ -851,23 +851,23 @@ Owner = the repository whose code answers the route; target = the authority it b| GET | /api/themes/me/submissions | server/themes/routes.js:133 | | keep || GET | /api/v1/changelog | server/updates/routes.js:51 | | keep || GET | /api/v1/creators/:creator/analytics | server/analytics/creators.js:121 | | keep |--| GET | /api/v1/follows | server/identity/follows.js:262 | | keep |--| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:278 | | keep |--| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:337 | | keep |--| GET | /api/v1/follows/:type/:target | server/identity/follows.js:291 | | keep |--| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:268 | | keep |--| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:324 | | keep |--| GET | /api/v1/follows/:type/:target/followers | server/identity/follows.js:304 | | keep |++| GET | /api/v1/follows | server/identity/follows.js:271 | | keep |++| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:287 | | keep |++| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:346 | | keep |++| GET | /api/v1/follows/:type/:target | server/identity/follows.js:300 | | keep |++| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:277 | | keep |++| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:333 | | keep |++| GET | /api/v1/follows/:type/:target/followers | server/identity/follows.js:313 | | keep || GET | /api/v1/me/blocks | server/identity/blocks.js:159 | | keep || DELETE | /api/v1/me/blocks/:target | server/identity/blocks.js:175 | | keep || PUT | /api/v1/me/blocks/:target | server/identity/blocks.js:164 | | keep |--| GET | /api/v1/me/follows | server/identity/follows.js:262 | | keep |--| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:278 | | keep |--| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:337 | | keep |--| GET | /api/v1/me/follows/:type/:target | server/identity/follows.js:291 | | keep |--| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:268 | | keep |--| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:324 | | keep |--| GET | /api/v1/me/follows/:type/:target/followers | server/identity/follows.js:304 | | keep |++| GET | /api/v1/me/follows | server/identity/follows.js:271 | | keep |++| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:287 | | keep |++| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:346 | | keep |++| GET | /api/v1/me/follows/:type/:target | server/identity/follows.js:300 | | keep |++| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:277 | | keep |++| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:333 | | keep |++| GET | /api/v1/me/follows/:type/:target/followers | server/identity/follows.js:313 | | keep || GET | /api/v1/projects | server/developer/routes.js:89 | | keep || POST | /api/v1/projects | server/developer/routes.js:88 | | keep || GET | /api/v1/projects/:project | server/developer/routes.js:90 | | keep |@@@ -900,22 +900,22 @@ Owner = the repository whose code answers the route; target = the authority it b| GET | /api/v1/projects/:project/usage | server/developer/routes.js:125 | | keep || GET | /api/v1/projects/catalog | server/developer/routes.js:82 | | keep || POST | /api/v1/realtime/ticket | server/auth/realtime-ticket.js:63 | | keep |--| GET | /api/v1/registry | server/registry/ecosystem.js:318 | | keep |--| GET | /api/v1/registry/capabilities | server/registry/ecosystem.js:343 | | keep |--| GET | /api/v1/registry/capabilities/:id | server/registry/ecosystem.js:348 | | keep |--| GET | /api/v1/registry/categories | server/registry/ecosystem.js:319 | | keep |--| GET | /api/v1/registry/categories/:id | server/registry/ecosystem.js:320 | | keep |--| GET | /api/v1/registry/contracts | server/registry/ecosystem.js:354 | | keep |--| GET | /api/v1/registry/domains/:domain | server/registry/ecosystem.js:337 | | keep |--| GET | /api/v1/registry/featured | server/registry/ecosystem.js:325 | | keep |--| GET | /api/v1/registry/health | server/registry/ecosystem.js:372 | | keep |--| GET | /api/v1/registry/namespaces | server/registry/ecosystem.js:353 | | keep |--| GET | /api/v1/registry/releases | server/registry/ecosystem.js:371 | | keep |--| GET | /api/v1/registry/search | server/registry/ecosystem.js:378 | | keep |--| GET | /api/v1/registry/services | server/registry/ecosystem.js:326 | | keep |--| GET | /api/v1/registry/services/:id | server/registry/ecosystem.js:332 | | keep |--| GET | /api/v1/registry/topics | server/registry/ecosystem.js:355 | | keep |--| GET | /api/v1/registry/topics/:topic | server/registry/ecosystem.js:366 | | keep |++| GET | /api/v1/registry | server/registry/ecosystem.js:327 | | keep |++| GET | /api/v1/registry/capabilities | server/registry/ecosystem.js:352 | | keep |++| GET | /api/v1/registry/capabilities/:id | server/registry/ecosystem.js:357 | | keep |++| GET | /api/v1/registry/categories | server/registry/ecosystem.js:328 | | keep |++| GET | /api/v1/registry/categories/:id | server/registry/ecosystem.js:329 | | keep |++| GET | /api/v1/registry/contracts | server/registry/ecosystem.js:363 | | keep |++| GET | /api/v1/registry/domains/:domain | server/registry/ecosystem.js:346 | | keep |++| GET | /api/v1/registry/featured | server/registry/ecosystem.js:334 | | keep |++| GET | /api/v1/registry/health | server/registry/ecosystem.js:381 | | keep |++| GET | /api/v1/registry/namespaces | server/registry/ecosystem.js:362 | | keep |++| GET | /api/v1/registry/releases | server/registry/ecosystem.js:380 | | keep |++| GET | /api/v1/registry/search | server/registry/ecosystem.js:387 | | keep |++| GET | /api/v1/registry/services | server/registry/ecosystem.js:335 | | keep |++| GET | /api/v1/registry/services/:id | server/registry/ecosystem.js:341 | | keep |++| GET | /api/v1/registry/topics | server/registry/ecosystem.js:364 | | keep |++| GET | /api/v1/registry/topics/:topic | server/registry/ecosystem.js:375 | | keep || GET | /api/v1/staff/capabilities | server/admin/staff-api.js:34 | | keep || GET | /api/v1/staff/moderation-audit | server/admin/moderation-audit.js:140 | | keep || GET | /api/v1/staff/moderators | server/admin/staff-api.js:45 | | keep |@@@ -1007,7 +1007,7 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /internal/users/bulk | server/internal/routes.js:140 | | keep || GET | /internal/users/by-username/:username | server/internal/routes.js:129 | | keep || POST | /internal/verify-token | server/internal/routes.js:94 | | keep |--| GET | /llms.txt | server/index.js:733 | | keep |++| GET | /llms.txt | server/index.js:735 | | keep || GET | /me | server/coins/routes.js:18 | | keep || GET | /me/history | server/coins/routes.js:24 | | keep || POST | /merge | server/identity/account-merge.js:293 | | keep |@@@ -1028,7 +1028,7 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /oauth/token | server/auth/oauth-routes.js:215 | | keep || GET | /oauth/userinfo | server/auth/oauth-routes.js:426 | | keep || POST | /oauth/userinfo | server/auth/oauth-routes.js:427 | | keep |--| GET | /openvibe-sw.js | server/index.js:778 | | keep |++| GET | /openvibe-sw.js | server/index.js:780 | | keep || GET | /overview | server/admin/analytics-routes.js:75 | | keep || GET | /preferences | server/notifications/routes.js:121 | | keep || PUT | /preferences | server/notifications/routes.js:132 | | keep |@@@ -1043,12 +1043,12 @@ Owner = the repository whose code answers the route; target = the authority it b| GET | /service/:name | server/admin/analytics-routes.js:224 | | keep || GET | /settings | server/admin/routes.js:303 | | keep || PUT | /settings | server/admin/routes.js:341 | | keep |--| GET | /sso/check | server/index.js:762 | | keep |++| GET | /sso/check | server/index.js:764 | | keep || GET | /status | server/setup/routes.js:91 | | keep || GET | /status | server/status/routes.js:262 | | keep || POST | /test | server/discord/routes.js:92 | | keep || POST | /test-live | server/discord/routes.js:102 | | keep |--| GET | /tos | server/index.js:589 | | keep |++| GET | /tos | server/index.js:591 | | keep || GET | /unread-by-category | server/notifications/routes.js:47 | | keep || GET | /unread-count | server/notifications/routes.js:37 | | keep || GET | /updates | server/updates/routes.js:59 | | keep |@@@ -1070,7 +1070,7 @@ Owner = the repository whose code answers the route; target = the authority it b| GET | /verification-keys | server/admin/routes.js:899 | | keep || POST | /verification-keys | server/admin/routes.js:908 | | keep || DELETE | /verification-keys/:id | server/admin/routes.js:956 | | keep |--| GET | /verify-email | server/index.js:745 | | keep |++| GET | /verify-email | server/index.js:747 | | keep |## OpenVibe.Shared@@@ -1083,7 +1083,7 @@ Owner = the repository whose code answers the route; target = the authority it b| Method | Path | Source | Target | Disposition ||---|---|---|---|---|--| GET | /api/ready | server/observability.js:156 | | keep |++| GET | /api/ready | server/observability.js:158 | | keep || GET | /api/v1/:app/admin/storage | server/admin/routes.js:102 | | keep || GET | /api/v1/:app/admin/storage/buckets | server/admin/routes.js:692 | | keep || GET | /api/v1/:app/admin/storage/holds | server/admin/routes.js:590 | | keep |@@@ -1731,8 +1731,8 @@ Owner = the repository whose code answers the route; target = the authority it b| Method | Path | Source | Target | Disposition ||---|---|---|---|---|| GET | / | server/ui/routes.js:86 | | keep |--| GET | /api/health | server/app.js:48 | | keep |--| GET | /api/ready | server/app.js:61 | | keep |++| GET | /api/health | server/app.js:50 | | keep |++| GET | /api/ready | server/app.js:110 | | keep || GET | /auth/callback | server/auth/sso.js:71 | | keep || GET | /auth/login | server/auth/sso.js:64 | | keep || GET | /auth/logout | server/auth/sso.js:91 | | keep |@@@ -1746,8 +1746,8 @@ Owner = the repository whose code answers the route; target = the authority it b| POST | /destinations/:id/stop | server/api/v1.js:250 | | keep || POST | /destinations/:id/test | server/api/v1.js:237 | | keep || GET | /outputs/:id/logs | server/api/v1.js:305 | | keep |--| GET | /play/:file | server/app.js:92 | | keep |--| GET | /robots.txt | server/app.js:110 | | keep |++| GET | /play/:file | server/app.js:120 | | keep |++| GET | /robots.txt | server/app.js:138 | | keep || GET | /sessions | server/api/v1.js:262 | | keep || GET | /sessions | server/ui/routes.js:295 | | keep || GET | /sessions/:id | server/api/v1.js:283 | | keep |@@@ -133,8 +133,8 @@ Deliverable 3 (dependency half). A call site is a source file that makes HTTP re| Media/server/auth.js:473 | webhook | webhook_url (per-app, configured in DB) | service-token | yes | yes || Media/server/webhooks.js:4 | webhook | webhook_url (per-app, configured in DB) | hmac | yes | yes || Network/server/frame/service.js:32 | OpenVibe.AI | aiUrl, OV_AI_INTERNAL_URL, :4700 | internal-key, bearer, service-token | yes | no |--| Network/server/index.js:498 | OpenVibe.Blog | OV_BLOG_INTERNAL_URL, blogUrl, :4810 | internal-key, bearer | **no** | no |--| Network/server/index.js:557 | OpenVibe.Events | eventsUrl, eventsInternalUrl | internal-key, bearer | **no** | no |++| Network/server/index.js:500 | OpenVibe.Blog | OV_BLOG_INTERNAL_URL, blogUrl, :4810 | internal-key, bearer | **no** | no |++| Network/server/index.js:559 | OpenVibe.Events | eventsUrl, eventsInternalUrl | internal-key, bearer | **no** | no || Network/server/admin/analytics-routes.js:24 | OpenVibe.Games | :8000 | internal-key, bearer | yes | no || Network/server/admin/routes.js:74 | OpenVibe.Games | games.internalUrl | internal-key | yes | no || Network/server/index.js:247 | OpenVibe.Games | :8000, games.internalUrl | internal-key, bearer | **no** | no |@@@ -121,12 +121,12 @@ Owner = the repository whose process runs the job; target = the authority the wo| OpenVibe.Network | setInterval | | 0.05 s | server/graceful.js:77 | | keep || OpenVibe.Network | setInterval | | ? | server/identity/grants-admin.js:201 | | keep || OpenVibe.Network | setInterval | | ? | server/identity/profile-events.js:104 | | keep |--| OpenVibe.Network | setInterval | | 60 min | server/index.js:851 | | keep |--| OpenVibe.Network | setInterval | | 2 min | server/index.js:854 | | keep |--| OpenVibe.Network | setInterval | | 5 min | server/index.js:868 | | keep |--| OpenVibe.Network | setInterval | | 6 min | server/index.js:871 | | keep |--| OpenVibe.Network | setInterval | | 1 min | server/index.js:879 | | keep |--| OpenVibe.Network | setInterval | | ? | server/index.js:882 | | keep |++| OpenVibe.Network | setInterval | | 60 min | server/index.js:853 | | keep |++| OpenVibe.Network | setInterval | | 2 min | server/index.js:856 | | keep |++| OpenVibe.Network | setInterval | | 5 min | server/index.js:870 | | keep |++| OpenVibe.Network | setInterval | | 6 min | server/index.js:873 | | keep |++| OpenVibe.Network | setInterval | | 1 min | server/index.js:881 | | keep |++| OpenVibe.Network | setInterval | | ? | server/index.js:884 | | keep || OpenVibe.Network | setInterval | | ? | server/registry/deploy-drift.js:88 | | keep || OpenVibe.Network | setInterval | | ? | server/registry/library-tags.js:47 | | keep || OpenVibe.Shared | setInterval | | 15 min | account-switcher.js:624 | | keep |@@@ -1164,6 +1164,7 @@ Deliverable 5. Names and locations only; no value was read. "In prod" names the| OpenVibe.Shared | OV_NETWORK_LOGIN_URL | | brand.js || OpenVibe.Shared | OV_NETWORK_URL | | brand.js || OpenVibe.Shared | OV_PASTES_URL | | brand.js |++| OpenVibe.Shared | OV_TEST_STRICT | | test-runner.js || OpenVibe.Shared | OV_TEXT_URL | | brand.js || OpenVibe.Shared | OV_TOOLS_URL | | brand.js || OpenVibe.Shared | OV_YT_URL | | brand.js |@@@ -2,10 +2,11 @@> Generated by `scripts/roadmap-baseline/generate.js`. Do not edit by hand; edit `data/*.json` or the extractor and regenerate.--Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.++Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 05:20 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.| Severity | Area | Subject | Detail ||---|---|---|---|++| medium | deploy | network | deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb || low | database | /opt/openvibe.blog/data/blog.db | 401 KB, 20 tables, not a database the service opens (services.json): stale file or undeclared copy || low | database | /opt/openvibe.community/data/community.db | 258 KB, 21 tables, not a database the service opens (services.json): stale file or undeclared copy || low | database | /opt/openvibe.games/data/legacy-import/world-before-20260923T184930Z.db | 193 KB, 13 tables, not a database the service opens (services.json): stale file or undeclared copy |@@@ -17,11 +18,12 @@ Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared w| low | database | /opt/openvibe.live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db | 284.7 MB copy (backup, import snapshot or rehearsal) kept beside the service data || low | database | /opt/openvibe.live/shared/data/hobo.db | 0 B, zero tables (dead file) || low | database | /opt/openvibe.live/shared/data/live-before-rs-slots-20260924T0153Z.db | 279.2 MB, 151 tables, not a database the service opens (services.json): stale file or undeclared copy |--| low | database | /opt/openvibe.live/shared/data/live.db | 284.7 MB, 162 tables, not a database the service opens (services.json): stale file or undeclared copy |++| low | database | /opt/openvibe.live/shared/data/live.db | 284.7 MB, 163 tables, not a database the service opens (services.json): stale file or undeclared copy || low | database | /opt/openvibe.live/shared/data/openvibe.db | 0 B, zero tables (dead file) || low | database | /opt/openvibe.live/shared/data/rs-companion.db | 8.6 MB, 33 tables, not a database the service opens (services.json): stale file or undeclared copy || low | database | /opt/openvibe.media/data/backups/owner-subject-20260923.media.db | 9.5 MB copy (backup, import snapshot or rehearsal) kept beside the service data || low | database | /opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db | 11.3 MB, 27 tables, not a database the service opens (services.json): stale file or undeclared copy |++| low | database | /opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db | 11.7 MB, 36 tables, not a database the service opens (services.json): stale file or undeclared copy || low | database | /opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db | 292.4 MB copy (backup, import snapshot or rehearsal) kept beside the service data || low | database | /opt/openvibe.network/data/backups/network-pre-follows-20260926.db | 292.1 MB copy (backup, import snapshot or rehearsal) kept beside the service data || low | database | /opt/openvibe.network/data/network-pre-refresh-hash-2026-09-24.db | 279.1 MB copy (backup, import snapshot or rehearsal) kept beside the service data |@@@ -52,30 +54,10 @@ Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared w| low | database | /var/lib/openvibe-community/community.pre-c24b-20260925T185400Z.db | 2.2 MB copy (backup, import snapshot or rehearsal) kept beside the service data || low | database | /var/lib/openvibe-community/community.pre-c24c-20260925T185425Z.db | 2.2 MB copy (backup, import snapshot or rehearsal) kept beside the service data || low | database | /var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db | 2.0 MB copy (backup, import snapshot or rehearsal) kept beside the service data |--| low | deploy | ai | deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | billing | deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | blog | deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | chat | deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | community | deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | coupons | deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | deals | deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | events | deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json) || low | deploy | games | deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | host | deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md) |--| low | deploy | live | deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json) |--| low | deploy | media | deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | network | deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more) |--| low | deploy | news | deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | openre | deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | reviews | deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | search | deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json) |++| low | deploy | live | deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json) || low | deploy | sites | deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | sources | deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | tips | deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | tools | deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | trade | deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | vip | deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json) |--| low | deploy | wiki | deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json) |++| low | deploy | tools | deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more) || low | env | OpenRe.Stream:OPENRE_SECRETS_KEY_PREVIOUS | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback || low | env | OpenVibe.Billing:CCBILL_WEBHOOK_SECRET | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback || low | env | OpenVibe.Billing:NOWPAYMENTS_API_KEY | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |@@@ -23,10 +23,10 @@ Deliverable 8, derived from the [requirement ledger](requirement-ledger.md) (as| D39 | Mods | absent | **partial** | D39 partial | W12, W21 | yes | - || D40 | Open developer services | absent | **partial** | D40 partial | W20, W21 | yes | 40 of 112 call sites authenticate with the shared internal key || D41 | Independent runtime lifecycle | partial | **partial** | D41 partial | W7, W21 | yes | - |--| D42 | Shared component architecture | partial | **partial** | D42 partial | W2, Track R | yes | 25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0; 31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0) |++| D42 | Shared component architecture | partial | **partial** | D42 partial | W2, Track R | yes | 25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0; 11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0) || D43 | Safe active-client updates | absent | **partial** | D43 partial | Track R | yes | - || D44 | Crawlable component rendering | built | **partial** | D44 partial | Track R (preserve) | yes | - |--| D45 | Release compatibility and recovery | absent | **partial** | D45 partial | Track R, W22 | yes | 24 service(s) not running origin/main |++| D45 | Release compatibility and recovery | absent | **partial** | D45 partial | Track R, W22 | yes | 1 service(s) behind origin/main in what runs, 4 more only in documentation and tests || D46 | Update observability and acceptance | absent | **partial** | D46 partial | Track R, Track O | yes | 27 of 27 scanned repos have .github/workflows |Families: 0 met, 21 partial, 0 not met, 1 blocked on owner (of 22). Requirements: 3 met, 36 partial, 0 not met, 7 blocked on owner (of 46); 46 verified. At Wave 0 the same 22 families were 3 built, 11 partial, 8 absent.@@@ -18,8 +18,8 @@ Deliverable 9. **Not yet reviewed by the production-host owner** (Wave 0 exit cr| H10 | Commit identity | medium | partial | **needed** | Every contributor | all | Per-repo git config user.email = [email protected]; every new commit follows it. Older history keeps some assistant trailers. | main history violates the rule in: Live (238 commits with assistant trailers); Network (14 commits with assistant trailers); Media (30 commits with assistant trailers); Tools (9 commits with assistant trailers) || H11 | analytics_events grows without pruning | medium | mitigated | - | OpenVibe.Shared maintainers (openvibe-shared/analytics.js) | Track O / ADR-021 - before any schema wave touching Live or Network | ADR-021: no IP, user id or city stored; raw analytics events are pruned after 30 days on a schedule in Live (nightly job), Tools (timer) and Network (openvibe-shared analytics retention.schedulePrune since 9bbd90f), rollups kept. | largest analytics stores: live/shared/data/analytics.db 525.4 MB; network/data/network.db 302.4 MB; tools/apps/audio/data/analytics.db 36.7 MB; tools/apps/text/data/analytics.db 5.9 MB || H12 | No Cloudflare cache-purge step after deploys | low | blocked-on-owner | **needed** | Platform operator | W21 / Track I | Cache Rules "browser_ttl respect_origin" on every openvibe.* zone and openre.stream (2026-09-23) make the edge follow origin max-age; Search has a purge queue that stays inert until a purge-scoped token exists (CLOUDFLARE_PURGE_TOKEN). | CLOUDFLARE_PURGE_TOKEN unset in search.env |--| H13 | Production drifts from main | medium | open | - | Platform operator | W0 (checklist) / W21 (release manifests) | Deploy or record why each lagging service is held back. | ai: deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json); billing: deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json); blog: deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json); chat: deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json); community: deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json); coupons: deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json); deals: deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json); events: deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json); games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); host: deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md); live: deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); media: deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json); network: deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more); news: deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json); openre: deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json); reviews: deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json); search: deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); sources: deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json); tips: deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json); trade: deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json); vip: deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json); wiki: deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json) |--| H14 | Dead and backup database files on the production host | low | open | **needed** | Live maintainers | W0 | Confirm no code opens them, then delete the empty files; move copies (backups, import snapshots, rehearsal databases) to /var/backups/openvibe with a retention date. | blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db |++| H13 | Production drifts from main | medium | open | - | Platform operator | W0 (checklist) / W21 (release manifests) | Deploy or record why each lagging service is held back. | network: deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb; games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); live: deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more) |++| H14 | Dead and backup database files on the production host | low | open | **needed** | Live maintainers | W0 | Confirm no code opens them, then delete the empty files; move copies (backups, import snapshots, rehearsal databases) to /var/backups/openvibe with a retention date. | blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, media/data/reports/h15-resize-applied-20260928.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db || H15 | Media objects with no good copy | medium | blocked-on-owner | **needed** | Media maintainers | W4 (repair) / W22 (DR drills) | Scheduled copy verification now runs inside Media and reports through /api/ready (object_copies); the 6 objects are marked degraded. Each needs a decision: re-upload from a surviving source, or mark it unrecoverable and tell its owner. | - || H16 | Off-host backups are unreadable without the backup key, which lives only on the host | high | blocked-on-owner | **needed** | Production-host owner | W22 | Escrow the key offline (password manager or paper), record its key id (`ovhost offsite check`) next to it, and test a restore from the bucket with the escrowed copy. | openvibe-backup.timer is active/waiting || H17 | Pre-ADR-021 analytics backups still hold IP addresses | medium | open | - | Platform operator | Track O / ADR-021 | Delete after 2026-10-07: /opt/openvibe.live/data/backups/analytics-pre-adr021-2026-09-23.db, /opt/openvibe.tools/backups/analytics-2026-09-23/, and Network data/backups/network.db.pre-adr021-20260923T1634. | - |@@@ -2,7 +2,7 @@The audit baseline from the OpenVibe development roadmap (Wave 0; section 12 items 1-3): what exists across the estate, who owns each piece of data today and who should, what production looks like next to the repos, and which hazards constrain later waves. Every file here except `data/*.json` is generated.--Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14cac06`, Tools `4f4ed6e`, Community `2da3501`, Games `eb2d008`, Sites `304e8b1`, Events `19919ec`, Chat `d87c8d3`, OpenRe.Stream `c77ec2a`, Billing `f24684b`, Tips `13986b5`, VIP `95b3e19`, AI `6c8b833`, Search `e8511d8`, Sources `1670853`, Wiki `3302540`, Blog `8a7f8eb`, News `97dae43`, Reviews `c87b344`, Deals `533450f`, Coupons `b91cd79`, Trade `273bce7`, Codes `64d8feb`, Host `6d2aaaa`, Examples `92eb7c3`. Production snapshot: openvibe-oregon, 2026-09-28.++Source commits: Live `7fd7bea`, Network `2c1dacb`, Shared `919c108`, Media `47b21bd`, Tools `9339e15`, Community `581d805`, Games `eb2d008`, Sites `304e8b1`, Events `7c575cd`, Chat `4c517a5`, OpenRe.Stream `d9f4240`, Billing `1f9df56`, Tips `3cc8c83`, VIP `63f46fa`, AI `f6fdbc9`, Search `04f9fd4`, Sources `6e1185e`, Wiki `a81573f`, Blog `9f339e3`, News `cb6d79e`, Reviews `8416fcb`, Deals `0bf25e2`, Coupons `168262d`, Trade `d515e46`, Codes `1246445`, Host `02c68f6`, Examples `058c71a`. Production snapshot: openvibe-oregon, 2026-09-28.## Deliverables@@@ -14,7 +14,7 @@ Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14ca| 4 | [05-realtime-and-jobs.md](05-realtime-and-jobs.md) | WebSocket servers and paths, non-HTTP protocols, background jobs || 5 | [06-secrets.md](06-secrets.md) | auth mechanisms and secret names (no values) || 6 | [07-ownership.md](07-ownership.md) | current vs target data ownership |--| 7 | [08-discrepancies.md](08-discrepancies.md) | 377 production-vs-repo items |++| 7 | [08-discrepancies.md](08-discrepancies.md) | 359 production-vs-repo items || 8 | [09-d-status.md](09-d-status.md) | D01-D46 family status, derived from the requirement ledger (families: 0 met, 21 partial, 0 not met, 1 blocked on owner) || 9 | [10-hazards.md](10-hazards.md) | 18 hazards with owners, mitigations and waves; 10 need the owner's review || 10 | [requirement-ledger.md](requirement-ledger.md), [requirement-ledger.json](requirement-ledger.json) | D01-D46 with acceptance artifacts (roadmap §22.4/§25): 3 met, 36 partial, 0 not met, 7 blocked on owner |@@@ -28,7 +28,7 @@ Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14ca| pass | Every route is attributed to a repo and source line, with an owner classification | 2453 routes, 0 unclassified; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix) || pass | Every background job is listed with its location and an owner classification | 179 timers/jobs, 0 unclassified || pass | Every cross-service call records caller, callee, auth, timeout and retry | 112 call sites; 39 with no timeout detected |--| pass | Unknowns are marked unknown, not guessed | 2 unknown items recorded |++| pass | Unknowns are marked unknown, not guessed | 2 unknown items recorded; 0 things this run could not observe, each marked unknown || pass | Every D01-D46 requirement has a status and verified acceptance artifacts (requirement ledger) | 46/46 requirements verified || **open** | Hazard register reviewed by the production-host owner | pending: set reviewedBy in data/hazards.json after review |@@@ -1,6 +1,6 @@{"owner": "OpenVibers",-- "collectedAt": "2026-09-28T03:32:40.497Z",++ "collectedAt": "2026-09-28T05:20:29.699Z","repos": [{"description": "AlexFrison.net",@@@ -24,10 +24,10 @@},{"description": "Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health.",-- "diskUsage": 433,++ "diskUsage": 541,"isArchived": false,"name": "OpenRe.Stream",-- "pushedAt": "2026-09-28T03:20:27Z",++ "pushedAt": "2026-09-28T04:16:48Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -40,7 +40,7 @@"port": 4500,"rtmpPort": 1936,"domain": "openre.stream",-- "contracts": "openvibe-contracts v0.49.0 (openvibe-sdk v0.12.0, openvibe-shared v1.22.0)",++ "contracts": "openvibe-contracts v0.49.0 (openvibe-sdk v0.12.0, openvibe-shared v1.25.0)","protocols": {"rtmp": "ingest ported (openre-rtmp-ingest)","restream": "RTMP source to RTMP/RTMPS/SRT destinations ported (openre-restream-worker)",@@@ -79,10 +79,10 @@},{"description": "Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product.",-- "diskUsage": 1033,++ "diskUsage": 1037,"isArchived": false,"name": "OpenVibe.AI",-- "pushedAt": "2026-09-28T03:20:29Z",++ "pushedAt": "2026-09-28T04:20:29Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -134,10 +134,10 @@},{"description": "The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts.",-- "diskUsage": 597,++ "diskUsage": 680,"isArchived": false,"name": "OpenVibe.Billing",-- "pushedAt": "2026-09-28T03:20:31Z",++ "pushedAt": "2026-09-28T04:18:44Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -171,10 +171,10 @@},{"description": "The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds.",-- "diskUsage": 722,++ "diskUsage": 756,"isArchived": false,"name": "OpenVibe.Blog",-- "pushedAt": "2026-09-28T03:20:33Z",++ "pushedAt": "2026-09-28T04:20:33Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -190,7 +190,7 @@"packages": ["openvibe-publishing v0.4.0","openvibe-contracts v0.53.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -236,10 +236,10 @@},{"description": "Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation.",-- "diskUsage": 977,++ "diskUsage": 981,"isArchived": false,"name": "OpenVibe.Chat",-- "pushedAt": "2026-09-28T03:20:35Z",++ "pushedAt": "2026-09-28T04:25:02Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -305,10 +305,10 @@},{"description": "The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance.",-- "diskUsage": 814,++ "diskUsage": 872,"isArchived": false,"name": "OpenVibe.Codes",-- "pushedAt": "2026-09-28T03:29:24Z",++ "pushedAt": "2026-09-28T04:20:31Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -324,7 +324,7 @@"packages": ["openvibe-contracts v0.53.0","openvibe-sdk v0.13.0",-- "openvibe-shared v1.22.0"++ "openvibe-shared v1.25.0"],"summary": "Deployed and public since 2026-09-23: https://openvibe.codes is served by this portal (deployed with `sudo ovhost deploy codes`, unit openvibe-codes on 127.0.0.1:4900 behind nginx), and the domain left OpenVibe.Sites. Sign-in uses the registered Network OAuth client `codes` (PKCE S256); the principal `codes` holds events.event.publish and the Events relay is configured. On 2026-09-23 production held 0 manifests, 0 releases and 0 playground runs. The external-developer path (account, project, sandbox app, grants, Media upload, app events) was run once on production on 2026-09-23 with public endpoints and curl, not through these playgrounds; that check is not committed to a repository or CI.","works": [@@@ -375,10 +375,10 @@},{"description": "",-- "diskUsage": 1778,++ "diskUsage": 1888,"isArchived": false,"name": "OpenVibe.Community",-- "pushedAt": "2026-09-28T03:20:39Z",++ "pushedAt": "2026-09-28T04:17:39Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -428,10 +428,10 @@},{"description": "Machine-readable contracts for the whole OpenVibe network.",-- "diskUsage": 3315,++ "diskUsage": 3357,"isArchived": false,"name": "OpenVibe.Contracts",-- "pushedAt": "2026-09-28T03:22:17Z",++ "pushedAt": "2026-09-28T04:18:50Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -462,10 +462,10 @@},{"description": "Coupon codes with merchant matching, restrictions, expiry and real-people validity reports.",-- "diskUsage": 462,++ "diskUsage": 496,"isArchived": false,"name": "OpenVibe.Coupons",-- "pushedAt": "2026-09-28T03:20:43Z",++ "pushedAt": "2026-09-28T04:18:46Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -481,7 +481,7 @@"packages": ["openvibe-publishing v0.4.0","openvibe-contracts v0.53.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -520,10 +520,10 @@},{"description": "Deals submitted and voted on by the community, with source, price and freshness always shown.",-- "diskUsage": 493,++ "diskUsage": 527,"isArchived": false,"name": "OpenVibe.Deals",-- "pushedAt": "2026-09-28T03:20:45Z",++ "pushedAt": "2026-09-28T04:20:35Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -539,7 +539,7 @@"packages": ["openvibe-publishing v0.4.0","openvibe-contracts v0.53.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -583,10 +583,10 @@},{"description": "Durable events, subscriptions, delivery, retry, dead letters and replay for the network.",-- "diskUsage": 550,++ "diskUsage": 627,"isArchived": false,"name": "OpenVibe.Events",-- "pushedAt": "2026-09-28T03:20:47Z",++ "pushedAt": "2026-09-28T04:12:07Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -627,10 +627,10 @@},{"description": "Executable public integration examples, tested in CI against the platform.",-- "diskUsage": 320,++ "diskUsage": 329,"isArchived": false,"name": "OpenVibe.Examples",-- "pushedAt": "2026-09-28T03:20:49Z",++ "pushedAt": "2026-09-28T04:21:34Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -667,10 +667,10 @@},{"description": "First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023).",-- "diskUsage": 58,++ "diskUsage": 61,"isArchived": false,"name": "OpenVibe.Extensions",-- "pushedAt": "2026-09-25T21:11:21Z",++ "pushedAt": "2026-09-28T04:18:48Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -709,7 +709,7 @@"store listings (Chrome Web Store, addons.mozilla.org) and the store extension ids in COUPONS_EXTENSION_ORIGINS"],"deployed": false,-- "updated": "2026-09-23"++ "updated": "2026-09-28"}},{@@@ -754,10 +754,10 @@},{"description": "The network's deployment/control plane first; then isolated hosting for community sites, bots and mods.",-- "diskUsage": 1384,++ "diskUsage": 1479,"isArchived": false,"name": "OpenVibe.Host",-- "pushedAt": "2026-09-28T03:22:19Z",++ "pushedAt": "2026-09-28T05:19:55Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -774,7 +774,7 @@"packages": ["openvibe-contracts v0.66.0 (host.* capabilities and manifest released in v0.24.0; v0.32.0 adds the takedown routes to host.site.manage)","openvibe-sdk v0.12.0",-- "openvibe-shared v1.22.0"++ "openvibe-shared v1.25.0"],"capabilities": ["host.site.manage",@@@ -821,10 +821,10 @@},{"description": "",-- "diskUsage": 9109,++ "diskUsage": 8547,"isArchived": false,"name": "OpenVibe.Live",-- "pushedAt": "2026-09-28T03:25:00Z",++ "pushedAt": "2026-09-28T04:07:18Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -865,10 +865,10 @@},{"description": "",-- "diskUsage": 2022,++ "diskUsage": 2183,"isArchived": false,"name": "OpenVibe.Media",-- "pushedAt": "2026-09-28T03:20:55Z",++ "pushedAt": "2026-09-28T05:17:13Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -913,10 +913,10 @@},{"description": "",-- "diskUsage": 3471,++ "diskUsage": 3661,"isArchived": false,"name": "OpenVibe.Network",-- "pushedAt": "2026-09-28T03:27:59Z",++ "pushedAt": "2026-09-28T04:10:06Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -970,10 +970,10 @@},{"description": "Source-backed stories: clustered coverage, cited summaries, perspectives and timelines.",-- "diskUsage": 466,++ "diskUsage": 575,"isArchived": false,"name": "OpenVibe.News",-- "pushedAt": "2026-09-28T03:20:58Z",++ "pushedAt": "2026-09-28T04:21:13Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -989,7 +989,7 @@"packages": ["openvibe-publishing v0.4.0","openvibe-contracts v0.49.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -1033,10 +1033,10 @@},{"description": "Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority.",-- "diskUsage": 248,++ "diskUsage": 271,"isArchived": false,"name": "OpenVibe.Publishing",-- "pushedAt": "2026-09-28T03:21:00Z",++ "pushedAt": "2026-09-28T04:20:38Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1116,10 +1116,10 @@},{"description": "Review signals gathered across sources with provenance, entity resolution and honest aggregates.",-- "diskUsage": 501,++ "diskUsage": 591,"isArchived": false,"name": "OpenVibe.Reviews",-- "pushedAt": "2026-09-28T03:21:02Z",++ "pushedAt": "2026-09-28T04:17:11Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1134,7 +1134,7 @@"contracts": "openvibe-contracts v0.49.0","packages": ["openvibe-publishing v0.4.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -1172,10 +1172,10 @@},{"description": "Supported browser and server clients for the OpenVibe platform.",-- "diskUsage": 706,++ "diskUsage": 733,"isArchived": false,"name": "OpenVibe.SDK",-- "pushedAt": "2026-09-28T03:23:32Z",++ "pushedAt": "2026-09-28T04:21:17Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1206,10 +1206,10 @@},{"description": "Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation.",-- "diskUsage": 318,++ "diskUsage": 340,"isArchived": false,"name": "OpenVibe.Search",-- "pushedAt": "2026-09-28T03:21:06Z",++ "pushedAt": "2026-09-28T04:16:52Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1253,10 +1253,10 @@},{"description": "Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders.",-- "diskUsage": 1084,++ "diskUsage": 1260,"isArchived": false,"name": "OpenVibe.Shared",-- "pushedAt": "2026-09-28T03:21:08Z",++ "pushedAt": "2026-09-28T04:04:32Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1265,7 +1265,7 @@"code": true,"wave": "W2","package": "openvibe-shared",-- "version": "1.23.1",++ "version": "1.25.0","plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)","deployed": false,"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",@@@ -1284,7 +1284,7 @@},{"description": "Static front pages for OpenVibe domains that are not full apps yet",-- "diskUsage": 967,++ "diskUsage": 970,"isArchived": false,"name": "OpenVibe.Sites","pushedAt": "2026-09-28T03:21:10Z",@@@ -1329,10 +1329,10 @@},{"description": "Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states.",-- "diskUsage": 309,++ "diskUsage": 369,"isArchived": false,"name": "OpenVibe.Sources",-- "pushedAt": "2026-09-28T03:21:12Z",++ "pushedAt": "2026-09-28T04:17:09Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1384,10 +1384,10 @@},{"description": "Creator support: tips, goals, paid messages, TTS and media requests, overlays.",-- "diskUsage": 563,++ "diskUsage": 583,"isArchived": false,"name": "OpenVibe.Tips",-- "pushedAt": "2026-09-28T03:21:14Z",++ "pushedAt": "2026-09-28T04:21:11Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1421,10 +1421,10 @@},{"description": "",-- "diskUsage": 2632,++ "diskUsage": 2703,"isArchived": false,"name": "OpenVibe.Tools",-- "pushedAt": "2026-09-28T03:21:16Z",++ "pushedAt": "2026-09-28T04:22:25Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1473,10 +1473,10 @@},{"description": "Informational watchlists, sourced market context and alerts. No custody, no order execution.",-- "diskUsage": 418,++ "diskUsage": 449,"isArchived": false,"name": "OpenVibe.Trade",-- "pushedAt": "2026-09-28T03:21:18Z",++ "pushedAt": "2026-09-28T04:21:15Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1493,7 +1493,7 @@"packages": ["openvibe-contracts v0.49.0","openvibe-publishing v0.4.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -1536,10 +1536,10 @@},{"description": "Memberships: plans, perks and benefits recognised across every OpenVibe site.",-- "diskUsage": 510,++ "diskUsage": 525,"isArchived": false,"name": "OpenVibe.VIP",-- "pushedAt": "2026-09-28T03:21:20Z",++ "pushedAt": "2026-09-28T04:20:39Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1590,10 +1590,10 @@},{"description": "Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed.",-- "diskUsage": 754,++ "diskUsage": 787,"isArchived": false,"name": "OpenVibe.Wiki",-- "pushedAt": "2026-09-28T03:21:22Z",++ "pushedAt": "2026-09-28T04:17:41Z","visibility": "PUBLIC","defaultBranch": "main","status": {@@@ -1608,7 +1608,7 @@"contracts": "openvibe-contracts v0.64.0","packages": ["openvibe-publishing v0.4.0",-- "openvibe-shared v1.22.0",++ "openvibe-shared v1.25.0","openvibe-sdk v0.12.0"],"capabilities": [@@@ -1,51 +1,51 @@{"host": "openvibe-oregon",-- "collectedAt": "2026-09-28T03:31:00.238Z",++ "collectedAt": "2026-09-28T05:20:11.716Z","deployments": {"ai": {"path": "/opt/openvibe.ai",-- "sha": "549bed09452233c6b21d529ab905a7bd8fbad4da",-- "committedAt": "2026-09-27T19:43:37-07:00"++ "sha": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",++ "committedAt": "2026-09-27T21:20:27-07:00"},"billing": {"path": "/opt/openvibe.billing",-- "sha": "80f97aabbecb0fcb81842480166533ff0452c8a5",-- "committedAt": "2026-09-27T19:45:09-07:00"++ "sha": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",++ "committedAt": "2026-09-27T21:18:42-07:00"},"blog": {"path": "/opt/openvibe.blog",-- "sha": "21d537c6e6b90712512916e4d7377d581ee2f646",-- "committedAt": "2026-09-27T18:49:25-07:00"++ "sha": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",++ "committedAt": "2026-09-27T21:20:31-07:00"},"chat": {"path": "/opt/openvibe.chat",-- "sha": "3aab730c5105594523ed58ab0643c6eedc6b5214",-- "committedAt": "2026-09-27T19:10:37-07:00"++ "sha": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",++ "committedAt": "2026-09-27T21:25:00-07:00"},"codes": {"path": "/opt/openvibe.codes",-- "sha": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",-- "committedAt": "2026-09-27T20:27:52-07:00"++ "sha": "1246445c4abaddcacf4d04adf172d601700833e3",++ "committedAt": "2026-09-27T21:20:29-07:00"},"community": {"path": "/opt/openvibe.community",-- "sha": "52d923a941f659ccfc7cb442efb2b10349663175",-- "committedAt": "2026-09-27T18:07:00-07:00"++ "sha": "581d80535f4bd1081afeb7a564392d4e1e5eb000",++ "committedAt": "2026-09-27T21:17:37-07:00"},"coupons": {"path": "/opt/openvibe.coupons",-- "sha": "64835d2a1c926e89116a35218d7a2d081f38b67a",-- "committedAt": "2026-09-27T19:02:19-07:00"++ "sha": "168262d1baa81ab1973863d66d52ab213711ef81",++ "committedAt": "2026-09-27T21:18:44-07:00"},"deals": {"path": "/opt/openvibe.deals",-- "sha": "fa0582d267ef61e7b141299008d6239dd34f49ce",-- "committedAt": "2026-09-27T18:58:50-07:00"++ "sha": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",++ "committedAt": "2026-09-27T21:20:34-07:00"},"events": {"path": "/opt/openvibe.events",-- "sha": "f55f7eb601be58220089c197f7dd2178b46d8d15",-- "committedAt": "2026-09-27T19:55:58-07:00"++ "sha": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",++ "committedAt": "2026-09-27T21:12:06-07:00"},"games": {"path": "/opt/openvibe.games",@@@ -54,40 +54,40 @@},"host": {"path": "/opt/openvibe.host",-- "sha": "2b633899f41b559586e3d6c234925d498c7bf2cd",-- "committedAt": "2026-09-27T19:35:46-07:00"++ "sha": "02c68f694a28f06e3056a05055f4515b3d4e7c64",++ "committedAt": "2026-09-27T22:19:53-07:00"},"live": {"path": "/opt/openvibe.live","layout": "release",-- "release": "20260928-032420-b0cc2ef4",-- "sha": "b0cc2ef4f8a57c9624b88af64a6aa4bd1e425279",-- "committedAt": "2026-09-27T19:58:34-07:00"++ "release": "20260928-040645-278cd404",++ "sha": "278cd4047e57f4a4849b2adde497894a4f985445",++ "committedAt": "2026-09-27T21:06:08-07:00"},"media": {"path": "/opt/openvibe.media",-- "sha": "62483631db9b9c120662abf2b21d4cff0a2bdc80",-- "committedAt": "2026-09-27T19:50:40-07:00"++ "sha": "47b21bde0b4863344fafbb90109922fbf8757687",++ "committedAt": "2026-09-27T22:17:11-07:00"},"network": {"path": "/opt/openvibe.network",-- "sha": "ddd87b6844fad1f0f878ed574ce0e2c990e5e695",-- "committedAt": "2026-09-27T19:26:13-07:00"++ "sha": "ac71bb4d82b09a1fe384119a22d92bd3eb98abbf",++ "committedAt": "2026-09-27T20:53:11-07:00"},"news": {"path": "/opt/openvibe.news",-- "sha": "8ab47a6a78168e1b25ac07c01aeb3a0bb743bbb9",-- "committedAt": "2026-09-27T19:20:19-07:00"++ "sha": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",++ "committedAt": "2026-09-27T21:21:11-07:00"},"reviews": {"path": "/opt/openvibe.reviews",-- "sha": "1cff36b8b9d385c4effb323f0506ede106b18d22",-- "committedAt": "2026-09-27T19:23:25-07:00"++ "sha": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",++ "committedAt": "2026-09-27T21:17:09-07:00"},"search": {"path": "/opt/openvibe.search",-- "sha": "8ed7667ff1e383271ddcc67c709be1bf5e1ba43d",-- "committedAt": "2026-09-27T17:59:00-07:00"++ "sha": "04f9fd45c3c10b401704da2994700c14290b5051",++ "committedAt": "2026-09-27T21:16:50-07:00"},"sites": {"path": "/opt/openvibe.sites",@@@ -96,13 +96,13 @@},"sources": {"path": "/opt/openvibe.sources",-- "sha": "351383e8111395668a16f66b11d659549c6483fb",-- "committedAt": "2026-09-27T19:29:11-07:00"++ "sha": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",++ "committedAt": "2026-09-27T21:17:07-07:00"},"tips": {"path": "/opt/openvibe.tips",-- "sha": "1e6bfbb8294c9401c46c066457b165c24bc90d02",-- "committedAt": "2026-09-27T18:11:05-07:00"++ "sha": "3cc8c8354183008026e38a99db9ef96014663467",++ "committedAt": "2026-09-27T21:21:09-07:00"},"tools": {"path": "/opt/openvibe.tools",@@@ -111,25 +111,25 @@},"trade": {"path": "/opt/openvibe.trade",-- "sha": "4658447782c7d259e59d8c1060fd05c60cf66574",-- "committedAt": "2026-09-27T19:26:12-07:00"++ "sha": "d515e46f7f32a6265a8e7feab49e97b9811094ed",++ "committedAt": "2026-09-27T21:21:13-07:00"},"vip": {"path": "/opt/openvibe.vip",-- "sha": "0fbcbb53802d2bd4e4dc6e393465a1fce1fc75a9",-- "committedAt": "2026-09-27T18:14:01-07:00"++ "sha": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",++ "committedAt": "2026-09-27T21:20:38-07:00"},"wiki": {"path": "/opt/openvibe.wiki",-- "sha": "32a26ef43c5f4ac2c02c813f0ba68fda5f8cd5cf",-- "committedAt": "2026-09-27T18:44:27-07:00"++ "sha": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",++ "committedAt": "2026-09-27T21:17:39-07:00"},"openre": {"path": "/opt/openre.stream","layout": "release",-- "release": "cf423e377878",-- "sha": "cf423e377878eb60e449205a670130e6febb6b07",-- "committedAt": "2026-09-27T19:32:33-07:00"++ "release": "d9f42407f666",++ "sha": "d9f42407f66648c547c32989ecf862b0bc949b63",++ "committedAt": "2026-09-27T21:16:46-07:00"}},"units": [@@@ -488,7 +488,7 @@},{"file": "/opt/openvibe.games/data/world.db",-- "bytes": 610304,++ "bytes": 634880,"owner": "ubuntu","tables": ["account_data_events",@@@ -1357,7 +1357,7 @@},{"file": "/opt/openvibe.live/shared/data/live.db",-- "bytes": 284700672,++ "bytes": 284712960,"owner": "ubuntu","tables": ["account_data_events",@@@ -1444,6 +1444,7 @@"easter_egg_solves","emotes","event_outbox",++ "follow_projection_revisions","follows","game_achievements","game_bank",@@@ -1677,6 +1678,49 @@"vods"]},++ {++ "file": "/opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db",++ "bytes": 11735040,++ "owner": "ubuntu",++ "tables": [++ "account_data_events",++ "apps",++ "assets",++ "clips",++ "config_keys",++ "config_snapshots",++ "content_views",++ "content_visits",++ "event_outbox",++ "files",++ "media_holds",++ "media_invariant_violations",++ "media_jobs",++ "media_locations",++ "media_namespaces",++ "media_object_changes",++ "media_object_tier_decisions",++ "media_object_view_salts",++ "media_object_viewer_days",++ "media_object_views_daily",++ "media_objects",++ "media_quota_reservations",++ "media_relationships",++ "media_settings",++ "media_tier_decisions",++ "media_upload_parts",++ "media_uploads",++ "media_variants",++ "media_verifications",++ "media_verify_runs",++ "paste_comments",++ "paste_likes",++ "pastes",++ "search_doc_pushes",++ "token_revocations",++ "vods"++ ]++ },{"file": "/opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db","bytes": 292413440,@@@ -2371,7 +2415,7 @@},{"file": "/var/lib/openvibe-ai/ai.db",-- "bytes": 115773440,++ "bytes": 118628352,"owner": "ubuntu","tables": ["ai_module_pushes",@@@ -2398,7 +2442,7 @@},{"file": "/var/lib/openvibe-billing/billing.db",-- "bytes": 831488,++ "bytes": 839680,"owner": "ubuntu","tables": ["account_balances",@@@ -2577,7 +2621,7 @@},{"file": "/var/lib/openvibe-blog/blog.db",-- "bytes": 1863680,++ "bytes": 1892352,"owner": "ubuntu","tables": ["blog_feed_settings",@@@ -2608,7 +2652,7 @@},{"file": "/var/lib/openvibe-chat/chat.db",-- "bytes": 25325568,++ "bytes": 25337856,"owner": "ubuntu","tables": ["account_data_events",@@@ -3171,7 +3215,7 @@},{"file": "/var/lib/openvibe-community/community.db",-- "bytes": 5300224,++ "bytes": 5464064,"owner": "ubuntu","tables": ["account_data_events",@@@ -3396,7 +3440,7 @@},{"file": "/var/lib/openvibe-events/events.db",-- "bytes": 23531520,++ "bytes": 23937024,"owner": "ubuntu","tables": ["app_revocations",@@@ -3430,7 +3474,7 @@},{"file": "/var/lib/openvibe-news/news.db",-- "bytes": 507904,++ "bytes": 512000,"owner": "ubuntu","tables": ["event_outbox",@@@ -1,36 +1,36 @@{"generatedFrom": {-- "OpenVibe.Live": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",-- "OpenVibe.Network": "c022f86236f3e8251c924fae6c98494658b795a4",-- "OpenVibe.Shared": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",-- "OpenVibe.Media": "14cac06886649848c332cfa564aa6b3594ea09bc",-- "OpenVibe.Tools": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",-- "OpenVibe.Community": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",++ "OpenVibe.Live": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",++ "OpenVibe.Network": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",++ "OpenVibe.Shared": "919c10811cc3a4dc62fda32228f5d82a7aef1045",++ "OpenVibe.Media": "47b21bde0b4863344fafbb90109922fbf8757687",++ "OpenVibe.Tools": "9339e1500139b229e2e2f59ed7cba336dced8897",++ "OpenVibe.Community": "581d80535f4bd1081afeb7a564392d4e1e5eb000","OpenVibe.Games": "eb2d00880d3231b2c68cb1753b4542044edef1e5","OpenVibe.Sites": "304e8b12b535f4b562f23027ae84f1a5d515cc6c",-- "OpenVibe.Events": "19919ece79707eed051c3f18ab37b7fdb6d939a6",-- "OpenVibe.Chat": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",-- "OpenRe.Stream": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",-- "OpenVibe.Billing": "f24684bb84ec1670bd08670891e6742fa433a548",-- "OpenVibe.Tips": "13986b59e697d12a328a4f12e993295445ca40be",-- "OpenVibe.VIP": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",-- "OpenVibe.AI": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",-- "OpenVibe.Search": "e8511d849720534a9ffcd54b052663111e5b1e6f",-- "OpenVibe.Sources": "167085388a637eed3f0d47b3c6eabb8c9d00814d",-- "OpenVibe.Wiki": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",-- "OpenVibe.Blog": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",-- "OpenVibe.News": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",-- "OpenVibe.Reviews": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",-- "OpenVibe.Deals": "533450f9cc4a358ba50f353f06826ec3611b4ddc",-- "OpenVibe.Coupons": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",-- "OpenVibe.Trade": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",-- "OpenVibe.Codes": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",-- "OpenVibe.Host": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",-- "OpenVibe.Examples": "92eb7c3b0f50fea9f76086ed3eeda3664de93494"++ "OpenVibe.Events": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",++ "OpenVibe.Chat": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",++ "OpenRe.Stream": "d9f42407f66648c547c32989ecf862b0bc949b63",++ "OpenVibe.Billing": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",++ "OpenVibe.Tips": "3cc8c8354183008026e38a99db9ef96014663467",++ "OpenVibe.VIP": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",++ "OpenVibe.AI": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",++ "OpenVibe.Search": "04f9fd45c3c10b401704da2994700c14290b5051",++ "OpenVibe.Sources": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",++ "OpenVibe.Wiki": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",++ "OpenVibe.Blog": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",++ "OpenVibe.News": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",++ "OpenVibe.Reviews": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",++ "OpenVibe.Deals": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",++ "OpenVibe.Coupons": "168262d1baa81ab1973863d66d52ab213711ef81",++ "OpenVibe.Trade": "d515e46f7f32a6265a8e7feab49e97b9811094ed",++ "OpenVibe.Codes": "1246445c4abaddcacf4d04adf172d601700833e3",++ "OpenVibe.Host": "02c68f694a28f06e3056a05055f4515b3d4e7c64",++ "OpenVibe.Examples": "058c71a5ddee4103a314ff211c5c869f9478a23f"},"prodSnapshot": {"host": "openvibe-oregon",-- "collectedAt": "2026-09-28T03:31:00.238Z"++ "collectedAt": "2026-09-28T05:20:11.716Z"},"repos": [{@@@ -38,13 +38,13 @@"service": "live","present": true,"git": {-- "head": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",++ "head": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea","branch": "main",-- "originMain": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",-- "committedAt": "2026-09-27T20:24:58-07:00"++ "originMain": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",++ "committedAt": "2026-09-27T21:07:16-07:00"},"sourceFiles": 221,-- "loc": 75126,++ "loc": 75127,"tables": [{"table": "arena_profiles",@@@ -5238,7 +5238,7 @@"method": "GET","path": "/api/streams/:id/call","file": "server/streaming/routes.js",-- "line": 2491,++ "line": 2492,"target": "OpenVibe.Live","disposition": "keep","wave": "-",@@@ -5248,7 +5248,7 @@"method": "PUT","path": "/api/streams/:id/call","file": "server/streaming/routes.js",-- "line": 2452,++ "line": 2453,"target": "OpenVibe.Live","disposition": "keep","wave": "-",@@@ -5378,7 +5378,7 @@"method": "POST","path": "/api/streams/channel/:username/follow","file": "server/streaming/routes.js",-- "line": 2402,++ "line": 2403,"target": "OpenVibe.Live","disposition": "keep","wave": "-",@@@ -5588,7 +5588,7 @@"method": "GET","path": "/api/streams/rtmp-proxy/:streamId.flv","file": "server/streaming/routes.js",-- "line": 2512,++ "line": 2513,"target": "OpenVibe.Live","disposition": "keep","wave": "-",@@@ -9302,13 +9302,13 @@"service": "network","present": true,"git": {-- "head": "c022f86236f3e8251c924fae6c98494658b795a4",++ "head": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3","branch": "main",-- "originMain": "c022f86236f3e8251c924fae6c98494658b795a4",-- "committedAt": "2026-09-27T20:27:57-07:00"++ "originMain": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",++ "committedAt": "2026-09-27T21:10:04-07:00"},-- "sourceFiles": 103,-- "loc": 21114,++ "sourceFiles": 104,++ "loc": 21166,"tables": [{"table": "moderation_audit",@@@ -9619,13 +9619,13 @@{"table": "user_follows","file": "server/identity/follows.js",-- "line": 42,++ "line": 48,"via": "repo"},{"table": "follow_import_holds","file": "server/identity/follows.js",-- "line": 57,++ "line": 63,"via": "repo"},{@@@ -9852,7 +9852,7 @@"method": "GET","path": "/.well-known/openvibe","file": "server/registry/ecosystem.js",-- "line": 317,++ "line": 326,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -9862,7 +9862,7 @@"method": "GET","path": "/.well-known/web-identity","file": "server/index.js",-- "line": 755,++ "line": 757,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -9902,7 +9902,7 @@"method": "GET","path": "/api/.well-known/jwks","file": "server/index.js",-- "line": 500,++ "line": 502,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -10172,7 +10172,7 @@"method": "GET","path": "/api/admin/ssh-info","file": "server/index.js",-- "line": 627,++ "line": 629,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -10592,7 +10592,7 @@"method": "GET","path": "/api/brand","file": "server/index.js",-- "line": 529,++ "line": 531,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -10602,7 +10602,7 @@"method": "GET","path": "/api/catalog.json","file": "server/index.js",-- "line": 593,++ "line": 595,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -10722,7 +10722,7 @@"method": "GET","path": "/api/health","file": "server/index.js",-- "line": 515,++ "line": 517,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -10942,7 +10942,7 @@"method": "GET","path": "/api/ready","file": "server/index.js",-- "line": 525,++ "line": 527,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -10952,7 +10952,7 @@"method": "GET","path": "/api/sso/targets","file": "server/index.js",-- "line": 575,++ "line": 577,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11092,7 +11092,7 @@"method": "GET","path": "/api/v1/follows","file": "server/identity/follows.js",-- "line": 262,++ "line": 271,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11102,7 +11102,7 @@"method": "DELETE","path": "/api/v1/follows/:type/:target","file": "server/identity/follows.js",-- "line": 278,++ "line": 287,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11112,7 +11112,7 @@"method": "DELETE","path": "/api/v1/follows/:type/:target","file": "server/identity/follows.js",-- "line": 337,++ "line": 346,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11122,7 +11122,7 @@"method": "GET","path": "/api/v1/follows/:type/:target","file": "server/identity/follows.js",-- "line": 291,++ "line": 300,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11132,7 +11132,7 @@"method": "PUT","path": "/api/v1/follows/:type/:target","file": "server/identity/follows.js",-- "line": 268,++ "line": 277,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11142,7 +11142,7 @@"method": "PUT","path": "/api/v1/follows/:type/:target","file": "server/identity/follows.js",-- "line": 324,++ "line": 333,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11152,7 +11152,7 @@"method": "GET","path": "/api/v1/follows/:type/:target/followers","file": "server/identity/follows.js",-- "line": 304,++ "line": 313,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11192,7 +11192,7 @@"method": "GET","path": "/api/v1/me/follows","file": "server/identity/follows.js",-- "line": 262,++ "line": 271,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11202,7 +11202,7 @@"method": "DELETE","path": "/api/v1/me/follows/:type/:target","file": "server/identity/follows.js",-- "line": 278,++ "line": 287,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11212,7 +11212,7 @@"method": "DELETE","path": "/api/v1/me/follows/:type/:target","file": "server/identity/follows.js",-- "line": 337,++ "line": 346,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11222,7 +11222,7 @@"method": "GET","path": "/api/v1/me/follows/:type/:target","file": "server/identity/follows.js",-- "line": 291,++ "line": 300,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11232,7 +11232,7 @@"method": "PUT","path": "/api/v1/me/follows/:type/:target","file": "server/identity/follows.js",-- "line": 268,++ "line": 277,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11242,7 +11242,7 @@"method": "PUT","path": "/api/v1/me/follows/:type/:target","file": "server/identity/follows.js",-- "line": 324,++ "line": 333,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11252,7 +11252,7 @@"method": "GET","path": "/api/v1/me/follows/:type/:target/followers","file": "server/identity/follows.js",-- "line": 304,++ "line": 313,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11582,7 +11582,7 @@"method": "GET","path": "/api/v1/registry","file": "server/registry/ecosystem.js",-- "line": 318,++ "line": 327,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11592,7 +11592,7 @@"method": "GET","path": "/api/v1/registry/capabilities","file": "server/registry/ecosystem.js",-- "line": 343,++ "line": 352,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11602,7 +11602,7 @@"method": "GET","path": "/api/v1/registry/capabilities/:id","file": "server/registry/ecosystem.js",-- "line": 348,++ "line": 357,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11612,7 +11612,7 @@"method": "GET","path": "/api/v1/registry/categories","file": "server/registry/ecosystem.js",-- "line": 319,++ "line": 328,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11622,7 +11622,7 @@"method": "GET","path": "/api/v1/registry/categories/:id","file": "server/registry/ecosystem.js",-- "line": 320,++ "line": 329,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11632,7 +11632,7 @@"method": "GET","path": "/api/v1/registry/contracts","file": "server/registry/ecosystem.js",-- "line": 354,++ "line": 363,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11642,7 +11642,7 @@"method": "GET","path": "/api/v1/registry/domains/:domain","file": "server/registry/ecosystem.js",-- "line": 337,++ "line": 346,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11652,7 +11652,7 @@"method": "GET","path": "/api/v1/registry/featured","file": "server/registry/ecosystem.js",-- "line": 325,++ "line": 334,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11662,7 +11662,7 @@"method": "GET","path": "/api/v1/registry/health","file": "server/registry/ecosystem.js",-- "line": 372,++ "line": 381,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11672,7 +11672,7 @@"method": "GET","path": "/api/v1/registry/namespaces","file": "server/registry/ecosystem.js",-- "line": 353,++ "line": 362,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11682,7 +11682,7 @@"method": "GET","path": "/api/v1/registry/releases","file": "server/registry/ecosystem.js",-- "line": 371,++ "line": 380,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11692,7 +11692,7 @@"method": "GET","path": "/api/v1/registry/search","file": "server/registry/ecosystem.js",-- "line": 378,++ "line": 387,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11702,7 +11702,7 @@"method": "GET","path": "/api/v1/registry/services","file": "server/registry/ecosystem.js",-- "line": 326,++ "line": 335,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11712,7 +11712,7 @@"method": "GET","path": "/api/v1/registry/services/:id","file": "server/registry/ecosystem.js",-- "line": 332,++ "line": 341,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11722,7 +11722,7 @@"method": "GET","path": "/api/v1/registry/topics","file": "server/registry/ecosystem.js",-- "line": 355,++ "line": 364,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -11732,7 +11732,7 @@"method": "GET","path": "/api/v1/registry/topics/:topic","file": "server/registry/ecosystem.js",-- "line": 366,++ "line": 375,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -12652,7 +12652,7 @@"method": "GET","path": "/llms.txt","file": "server/index.js",-- "line": 733,++ "line": 735,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -12862,7 +12862,7 @@"method": "GET","path": "/openvibe-sw.js","file": "server/index.js",-- "line": 778,++ "line": 780,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -13012,7 +13012,7 @@"method": "GET","path": "/sso/check","file": "server/index.js",-- "line": 762,++ "line": 764,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -13062,7 +13062,7 @@"method": "GET","path": "/tos","file": "server/index.js",-- "line": 589,++ "line": 591,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -13282,7 +13282,7 @@"method": "GET","path": "/verify-email","file": "server/index.js",-- "line": 745,++ "line": 747,"target": "OpenVibe.Network","disposition": "keep","wave": "-",@@@ -13738,7 +13738,7 @@},{"via": "live.internalUrl",-- "line": 660++ "line": 662}]},@@@ -13786,15 +13786,15 @@"refs": [{"via": "OV_BLOG_INTERNAL_URL",-- "line": 498++ "line": 500},{"via": "blogUrl",-- "line": 498++ "line": 500},{"via": ":4810",-- "line": 498++ "line": 500}]},@@@ -13803,19 +13803,19 @@"refs": [{"via": "eventsUrl",-- "line": 557++ "line": 559},{"via": "eventsInternalUrl",-- "line": 557++ "line": 559},{"via": "eventsUrl",-- "line": 644++ "line": 646},{"via": "eventsInternalUrl",-- "line": 644++ "line": 646}]}@@@ -13935,7 +13935,7 @@"kind": "setInterval","name": null,"intervalMs": 3600000,-- "line": 851,++ "line": 853,"file": "server/index.js","target": "OpenVibe.Network","disposition": "keep",@@@ -13946,7 +13946,7 @@"kind": "setInterval","name": null,"intervalMs": 120000,-- "line": 854,++ "line": 856,"file": "server/index.js","target": "OpenVibe.Network","disposition": "keep",@@@ -13957,7 +13957,7 @@"kind": "setInterval","name": null,"intervalMs": 300000,-- "line": 868,++ "line": 870,"file": "server/index.js","target": "OpenVibe.Network","disposition": "keep",@@@ -13968,7 +13968,7 @@"kind": "setInterval","name": null,"intervalMs": 360000,-- "line": 871,++ "line": 873,"file": "server/index.js","target": "OpenVibe.Network","disposition": "keep",@@@ -13979,7 +13979,7 @@"kind": "setInterval","name": null,"intervalMs": 60000,-- "line": 879,++ "line": 881,"file": "server/index.js","target": "OpenVibe.Network","disposition": "keep",@@@ -13990,7 +13990,7 @@"kind": "setInterval","name": null,"intervalMs": null,-- "line": 882,++ "line": 884,"file": "server/index.js","target": "OpenVibe.Network","disposition": "keep",@@@ -14022,7 +14022,7 @@],"contractTodos": 3,"unresolvedMounts": [],-- "testFiles": 77,++ "testFiles": 78,"ci": true},{@@@ -14030,13 +14030,13 @@"service": "shared","present": true,"git": {-- "head": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",++ "head": "919c10811cc3a4dc62fda32228f5d82a7aef1045","branch": "main",-- "originMain": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",-- "committedAt": "2026-09-27T20:13:02-07:00"++ "originMain": "919c10811cc3a4dc62fda32228f5d82a7aef1045",++ "committedAt": "2026-09-27T21:03:43-07:00"},-- "sourceFiles": 58,-- "loc": 15503,++ "sourceFiles": 59,++ "loc": 15638,"tables": [{"table": "config_snapshots",@@@ -14162,6 +14162,10 @@"release.js","release.js"],++ "OV_TEST_STRICT": [++ "test-runner.js",++ "test-runner.js"++ ],"TRACE_HOSTS": ["trace.js","trace.js"@@@ -14393,7 +14397,7 @@],"contractTodos": 0,"unresolvedMounts": [],-- "testFiles": 39,++ "testFiles": 40,"ci": true},{@@@ -14401,13 +14405,13 @@"service": "media","present": true,"git": {-- "head": "14cac06886649848c332cfa564aa6b3594ea09bc",++ "head": "47b21bde0b4863344fafbb90109922fbf8757687","branch": "main",-- "originMain": "14cac06886649848c332cfa564aa6b3594ea09bc",-- "committedAt": "2026-09-27T20:17:24-07:00"++ "originMain": "47b21bde0b4863344fafbb90109922fbf8757687",++ "committedAt": "2026-09-27T22:17:11-07:00"},"sourceFiles": 79,-- "loc": 20861,++ "loc": 20902,"tables": [{"table": "account_data_events",@@@ -14619,7 +14623,7 @@"method": "GET","path": "/api/ready","file": "server/observability.js",-- "line": 156,++ "line": 158,"target": "OpenVibe.Media","disposition": "keep","wave": "-",@@@ -16664,7 +16668,7 @@],"contractTodos": 0,"unresolvedMounts": [],-- "testFiles": 67,++ "testFiles": 68,"ci": true},{@@@ -16672,10 +16676,10 @@"service": "tools","present": true,"git": {-- "head": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",++ "head": "9339e1500139b229e2e2f59ed7cba336dced8897","branch": "main",-- "originMain": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",-- "committedAt": "2026-09-27T20:19:31-07:00"++ "originMain": "9339e1500139b229e2e2f59ed7cba336dced8897",++ "committedAt": "2026-09-27T21:22:24-07:00"},"sourceFiles": 176,"loc": 30522,@@@ -18905,10 +18909,10 @@"service": "community","present": true,"git": {-- "head": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",++ "head": "581d80535f4bd1081afeb7a564392d4e1e5eb000","branch": "main",-- "originMain": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",-- "committedAt": "2026-09-27T20:14:58-07:00"++ "originMain": "581d80535f4bd1081afeb7a564392d4e1e5eb000",++ "committedAt": "2026-09-27T21:17:37-07:00"},"sourceFiles": 66,"loc": 12037,@@@ -22082,10 +22086,10 @@"service": "events","present": true,"git": {-- "head": "19919ece79707eed051c3f18ab37b7fdb6d939a6",++ "head": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309","branch": "main",-- "originMain": "19919ece79707eed051c3f18ab37b7fdb6d939a6",-- "committedAt": "2026-09-27T20:03:54-07:00"++ "originMain": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",++ "committedAt": "2026-09-27T21:12:06-07:00"},"sourceFiles": 20,"loc": 3357,@@@ -22534,10 +22538,10 @@"service": "chat","present": true,"git": {-- "head": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",++ "head": "4c517a59ead3c9e71139b6d4954de8306a4d83ba","branch": "main",-- "originMain": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",-- "committedAt": "2026-09-27T20:03:11-07:00"++ "originMain": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",++ "committedAt": "2026-09-27T21:25:00-07:00"},"sourceFiles": 53,"loc": 16898,@@@ -24520,13 +24524,13 @@"service": "openre","present": true,"git": {-- "head": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",++ "head": "d9f42407f66648c547c32989ecf862b0bc949b63","branch": "main",-- "originMain": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",-- "committedAt": "2026-09-27T20:06:06-07:00"++ "originMain": "d9f42407f66648c547c32989ecf862b0bc949b63",++ "committedAt": "2026-09-27T21:16:46-07:00"},"sourceFiles": 36,-- "loc": 4806,++ "loc": 4834,"tables": [{"table": "stream_definitions",@@@ -24622,7 +24626,7 @@"method": "GET","path": "/api/health","file": "server/app.js",-- "line": 48,++ "line": 50,"target": "OpenRe.Stream","disposition": "keep","wave": "-",@@@ -24632,7 +24636,7 @@"method": "GET","path": "/api/ready","file": "server/app.js",-- "line": 61,++ "line": 110,"target": "OpenRe.Stream","disposition": "keep","wave": "-",@@@ -24772,7 +24776,7 @@"method": "GET","path": "/play/:file","file": "server/app.js",-- "line": 92,++ "line": 120,"target": "OpenRe.Stream","disposition": "keep","wave": "-",@@@ -24782,7 +24786,7 @@"method": "GET","path": "/robots.txt","file": "server/app.js",-- "line": 110,++ "line": 138,"target": "OpenRe.Stream","disposition": "keep","wave": "-",@@@ -25285,10 +25289,10 @@"service": "billing","present": true,"git": {-- "head": "f24684bb84ec1670bd08670891e6742fa433a548",++ "head": "1f9df5681486992d3fa8f076ff11f22aea5f0b25","branch": "main",-- "originMain": "f24684bb84ec1670bd08670891e6742fa433a548",-- "committedAt": "2026-09-27T20:08:06-07:00"++ "originMain": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",++ "committedAt": "2026-09-27T21:18:42-07:00"},"sourceFiles": 38,"loc": 5452,@@@ -26220,10 +26224,10 @@"service": "tips","present": true,"git": {-- "head": "13986b59e697d12a328a4f12e993295445ca40be",++ "head": "3cc8c8354183008026e38a99db9ef96014663467","branch": "main",-- "originMain": "13986b59e697d12a328a4f12e993295445ca40be",-- "committedAt": "2026-09-27T20:01:20-07:00"++ "originMain": "3cc8c8354183008026e38a99db9ef96014663467",++ "committedAt": "2026-09-27T21:21:09-07:00"},"sourceFiles": 30,"loc": 5346,@@@ -27185,10 +27189,10 @@"service": "vip","present": true,"git": {-- "head": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",++ "head": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b","branch": "main",-- "originMain": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",-- "committedAt": "2026-09-27T20:01:51-07:00"++ "originMain": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",++ "committedAt": "2026-09-27T21:20:38-07:00"},"sourceFiles": 30,"loc": 4293,@@@ -27905,10 +27909,10 @@"service": "ai","present": true,"git": {-- "head": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",++ "head": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b","branch": "main",-- "originMain": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",-- "committedAt": "2026-09-27T20:07:22-07:00"++ "originMain": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",++ "committedAt": "2026-09-27T21:20:27-07:00"},"sourceFiles": 44,"loc": 7919,@@@ -28923,10 +28927,10 @@"service": "search","present": true,"git": {-- "head": "e8511d849720534a9ffcd54b052663111e5b1e6f",++ "head": "04f9fd45c3c10b401704da2994700c14290b5051","branch": "main",-- "originMain": "e8511d849720534a9ffcd54b052663111e5b1e6f",-- "committedAt": "2026-09-27T19:55:17-07:00"++ "originMain": "04f9fd45c3c10b401704da2994700c14290b5051",++ "committedAt": "2026-09-27T21:16:50-07:00"},"sourceFiles": 18,"loc": 2868,@@@ -29369,10 +29373,10 @@"service": "sources","present": true,"git": {-- "head": "167085388a637eed3f0d47b3c6eabb8c9d00814d",++ "head": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32","branch": "main",-- "originMain": "167085388a637eed3f0d47b3c6eabb8c9d00814d",-- "committedAt": "2026-09-27T19:55:56-07:00"++ "originMain": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",++ "committedAt": "2026-09-27T21:17:07-07:00"},"sourceFiles": 24,"loc": 3100,@@@ -29753,10 +29757,10 @@"service": "wiki","present": true,"git": {-- "head": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",++ "head": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096","branch": "main",-- "originMain": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",-- "committedAt": "2026-09-27T20:00:00-07:00"++ "originMain": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",++ "committedAt": "2026-09-27T21:17:39-07:00"},"sourceFiles": 23,"loc": 4751,@@@ -30762,10 +30766,10 @@"service": "blog","present": true,"git": {-- "head": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",++ "head": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec","branch": "main",-- "originMain": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",-- "committedAt": "2026-09-27T19:58:44-07:00"++ "originMain": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",++ "committedAt": "2026-09-27T21:20:31-07:00"},"sourceFiles": 34,"loc": 5185,@@@ -31779,13 +31783,13 @@"service": "news","present": true,"git": {-- "head": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",++ "head": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278","branch": "main",-- "originMain": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",-- "committedAt": "2026-09-27T19:57:37-07:00"++ "originMain": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",++ "committedAt": "2026-09-27T21:21:11-07:00"},"sourceFiles": 34,-- "loc": 5251,++ "loc": 5252,"tables": [{"table": "news_topics",@@@ -32611,10 +32615,10 @@"service": "reviews","present": true,"git": {-- "head": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",++ "head": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2","branch": "main",-- "originMain": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",-- "committedAt": "2026-09-27T19:59:21-07:00"++ "originMain": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",++ "committedAt": "2026-09-27T21:17:09-07:00"},"sourceFiles": 23,"loc": 4792,@@@ -33552,10 +33556,10 @@"service": "deals","present": true,"git": {-- "head": "533450f9cc4a358ba50f353f06826ec3611b4ddc",++ "head": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749","branch": "main",-- "originMain": "533450f9cc4a358ba50f353f06826ec3611b4ddc",-- "committedAt": "2026-09-27T19:57:12-07:00"++ "originMain": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",++ "committedAt": "2026-09-27T21:20:34-07:00"},"sourceFiles": 36,"loc": 4980,@@@ -34502,10 +34506,10 @@"service": "coupons","present": true,"git": {-- "head": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",++ "head": "168262d1baa81ab1973863d66d52ab213711ef81","branch": "main",-- "originMain": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",-- "committedAt": "2026-09-27T19:56:35-07:00"++ "originMain": "168262d1baa81ab1973863d66d52ab213711ef81",++ "committedAt": "2026-09-27T21:18:44-07:00"},"sourceFiles": 29,"loc": 4289,@@@ -35295,10 +35299,10 @@"service": "trade","present": true,"git": {-- "head": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",++ "head": "d515e46f7f32a6265a8e7feab49e97b9811094ed","branch": "main",-- "originMain": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",-- "committedAt": "2026-09-27T19:58:02-07:00"++ "originMain": "d515e46f7f32a6265a8e7feab49e97b9811094ed",++ "committedAt": "2026-09-27T21:21:13-07:00"},"sourceFiles": 37,"loc": 4562,@@@ -35668,10 +35672,10 @@"service": "codes","present": true,"git": {-- "head": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",++ "head": "1246445c4abaddcacf4d04adf172d601700833e3","branch": "main",-- "originMain": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",-- "committedAt": "2026-09-27T20:27:52-07:00"++ "originMain": "1246445c4abaddcacf4d04adf172d601700833e3",++ "committedAt": "2026-09-27T21:20:29-07:00"},"sourceFiles": 32,"loc": 5072,@@@ -37062,10 +37066,10 @@"service": "host","present": true,"git": {-- "head": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",++ "head": "02c68f694a28f06e3056a05055f4515b3d4e7c64","branch": "main",-- "originMain": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",-- "committedAt": "2026-09-27T20:22:17-07:00"++ "originMain": "02c68f694a28f06e3056a05055f4515b3d4e7c64",++ "committedAt": "2026-09-27T22:19:53-07:00"},"sourceFiles": 68,"loc": 11899,@@@ -37993,10 +37997,10 @@"service": "examples","present": true,"git": {-- "head": "92eb7c3b0f50fea9f76086ed3eeda3664de93494",++ "head": "058c71a5ddee4103a314ff211c5c869f9478a23f","branch": "main",-- "originMain": "92eb7c3b0f50fea9f76086ed3eeda3664de93494",-- "committedAt": "2026-09-27T20:10:31-07:00"++ "originMain": "058c71a5ddee4103a314ff211c5c869f9478a23f",++ "committedAt": "2026-09-27T21:21:32-07:00"},"sourceFiles": 11,"loc": 1604,@@@ -38161,62 +38165,62 @@{"repo": "OpenRe.Stream","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.AI","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Billing","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Blog","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Chat","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Codes","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Community","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Coupons","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Deals","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Events","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Games",@@@ -38227,44 +38231,44 @@{"repo": "OpenVibe.Host","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Live","manifest": "package.json",-- "spec": "v1.23.1",++ "spec": "v1.25.0","state": "current"},{"repo": "OpenVibe.Media","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Network","manifest": "package.json",-- "spec": "v1.22.0",++ "spec": "v1.24.0","state": "behind"},{"repo": "OpenVibe.News","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Reviews","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Search","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Sites",@@@ -38275,14 +38279,14 @@{"repo": "OpenVibe.Sources","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Tips","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Tools",@@@ -38335,20 +38339,20 @@{"repo": "OpenVibe.Trade","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.VIP","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"},{"repo": "OpenVibe.Wiki","manifest": "package.json",-- "spec": "v1.22.0",-- "state": "behind"++ "spec": "v1.25.0",++ "state": "current"}],"ownership": [@@@ -44910,7 +44914,7 @@"repo": "OpenVibe.Network","table": "follow_import_holds","declaredAt": [-- "server/identity/follows.js:57"++ "server/identity/follows.js:63"],"prodDbs": ["network.db"@@@ -45435,7 +45439,7 @@"repo": "OpenVibe.Network","table": "user_follows","declaredAt": [-- "server/identity/follows.js:42"++ "server/identity/follows.js:48"],"prodDbs": ["network.db"@@@ -48816,7 +48820,7 @@"file": "server/index.js","target": "OpenVibe.Blog","via": "OV_BLOG_INTERNAL_URL, blogUrl, :4810",-- "lines": "498,498,498",++ "lines": "500,500,500","auth": "internal-key, bearer","timeout": false,"retry": false@@@ -48826,7 +48830,7 @@"file": "server/index.js","target": "OpenVibe.Events","via": "eventsUrl, eventsInternalUrl",-- "lines": "557,557,644,644",++ "lines": "559,559,646,646","auth": "internal-key, bearer","timeout": false,"retry": false@@@ -48896,7 +48900,7 @@"file": "server/index.js","target": "OpenVibe.Live","via": ":3000, live.internalUrl, liveUrl",-- "lines": "243,313,375,375,660",++ "lines": "243,313,375,375,662","auth": "internal-key, bearer","timeout": false,"retry": false@@@ -59155,6 +59159,15 @@],"prod": null},++ {++ "repo": "OpenVibe.Shared",++ "name": "OV_TEST_STRICT",++ "secret": false,++ "files": [++ "test-runner.js"++ ],++ "prod": null++ },{"repo": "OpenVibe.Shared","name": "OV_TEXT_URL",@@@ -61769,6 +61782,12 @@}],"discrepancies": [++ {++ "severity": "medium",++ "area": "deploy",++ "subject": "network",++ "detail": "deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb"++ },{"severity": "low","area": "database",@@@ -61839,7 +61858,7 @@"severity": "low","area": "database","subject": "/opt/openvibe.live/shared/data/live.db",-- "detail": "284.7 MB, 162 tables, not a database the service opens (services.json): stale file or undeclared copy"++ "detail": "284.7 MB, 163 tables, not a database the service opens (services.json): stale file or undeclared copy"},{"severity": "low",@@@ -61865,6 +61884,12 @@"subject": "/opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db","detail": "11.3 MB, 27 tables, not a database the service opens (services.json): stale file or undeclared copy"},++ {++ "severity": "low",++ "area": "database",++ "subject": "/opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db",++ "detail": "11.7 MB, 36 tables, not a database the service opens (services.json): stale file or undeclared copy"++ },{"severity": "low","area": "database",@@@ -62045,107 +62070,17 @@"subject": "/var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db","detail": "2.0 MB copy (backup, import snapshot or rehearsal) kept beside the service data"},-- {-- "severity": "low",-- "area": "deploy",-- "subject": "ai",-- "detail": "deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "billing",-- "detail": "deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "blog",-- "detail": "deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "chat",-- "detail": "deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "community",-- "detail": "deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "coupons",-- "detail": "deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "deals",-- "detail": "deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "events",-- "detail": "deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json)"-- },{"severity": "low","area": "deploy","subject": "games","detail": "deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json)"},-- {-- "severity": "low",-- "area": "deploy",-- "subject": "host",-- "detail": "deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md)"-- },{"severity": "low","area": "deploy","subject": "live",-- "detail": "deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "media",-- "detail": "deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "network",-- "detail": "deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "news",-- "detail": "deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "openre",-- "detail": "deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "reviews",-- "detail": "deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "search",-- "detail": "deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json)"++ "detail": "deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json)"},{"severity": "low",@@@ -62153,41 +62088,11 @@"subject": "sites","detail": "deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json)"},-- {-- "severity": "low",-- "area": "deploy",-- "subject": "sources",-- "detail": "deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "tips",-- "detail": "deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json)"-- },{"severity": "low","area": "deploy","subject": "tools",-- "detail": "deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "trade",-- "detail": "deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "vip",-- "detail": "deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json)"-- },-- {-- "severity": "low",-- "area": "deploy",-- "subject": "wiki",-- "detail": "deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json)"++ "detail": "deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more)"},{"severity": "low",@@@ -64039,10 +63944,10 @@"outbound.internal-key": "40 of 112 call sites authenticate with the shared internal key","ws.servers": "12 WebSocket server constructions","tables.analytics-copies": "2 repos carry their own analytics_events",-- "shared.pins": "25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0",-- "shared.drift": "31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0)",++ "shared.pins": "25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0",++ "shared.drift": "11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0)","ci.repos": "27 of 27 scanned repos have .github/workflows",-- "deploy.drift": "24 service(s) not running origin/main",++ "deploy.drift": "1 service(s) behind origin/main in what runs, 4 more only in documentation and tests","tests.OpenVibe.Live": "158 test files","tables.OpenVibe.Live": "126 tables","tables.OpenVibe.Live.target:OpenVibe.Live": "35 Live tables target OpenVibe.Live",@@@ -64059,15 +63964,15 @@"tables.OpenVibe.Live.target:OpenVibe.Billing": "2 Live tables target OpenVibe.Billing","tables.OpenVibe.Live.target:OpenVibe.Billing + OpenVibe.VIP": "1 Live tables target OpenVibe.Billing + OpenVibe.VIP","tables.OpenVibe.Live.target:OpenVibe.Codes": "2 Live tables target OpenVibe.Codes",-- "tests.OpenVibe.Network": "77 test files",++ "tests.OpenVibe.Network": "78 test files","tables.OpenVibe.Network": "70 tables","tables.OpenVibe.Network.target:OpenVibe.Network": "75 Network tables target OpenVibe.Network","tables.OpenVibe.Network.target:OpenVibe.Billing (loyalty ledger)": "2 Network tables target OpenVibe.Billing (loyalty ledger)","tables.OpenVibe.Network.target:OpenVibe.Events": "1 Network tables target OpenVibe.Events",-- "tests.OpenVibe.Shared": "39 test files",++ "tests.OpenVibe.Shared": "40 test files","tables.OpenVibe.Shared": "2 tables","tables.OpenVibe.Shared.target:OpenVibe.Shared": "2 Shared tables target OpenVibe.Shared",-- "tests.OpenVibe.Media": "67 test files",++ "tests.OpenVibe.Media": "68 test files","tables.OpenVibe.Media": "34 tables","tables.OpenVibe.Media.target:OpenVibe.Media": "32 Media tables target OpenVibe.Media","tables.OpenVibe.Media.target:OpenVibe.Community": "3 Media tables target OpenVibe.Community",@@@ -64557,11 +64462,11 @@"metrics": [{"key": "shared.pins",-- "value": "25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0"++ "value": "25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0"},{"key": "shared.drift",-- "value": "31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0)"++ "value": "11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0)"}],"members": [@@@ -64611,7 +64516,7 @@"metrics": [{"key": "deploy.drift",-- "value": "24 service(s) not running origin/main"++ "value": "1 service(s) behind origin/main in what runs, 4 more only in documentation and tests"}],"members": [@@@ -64829,7 +64734,7 @@"status": "open","check": "deploy-drift","ownerReview": false,-- "checkResult": "ai: deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json); billing: deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json); blog: deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json); chat: deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json); community: deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json); coupons: deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json); deals: deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json); events: deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json); games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); host: deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md); live: deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); media: deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json); network: deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more); news: deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json); openre: deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json); reviews: deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json); search: deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); sources: deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json); tips: deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json); trade: deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json); vip: deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json); wiki: deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json)"++ "checkResult": "network: deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb; games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); live: deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more)"},{"id": "H14",@@@ -64843,7 +64748,7 @@"status": "open","check": "dead-dbs","ownerReview": "Approve deleting the zero-table files and moving or deleting the import snapshots and backups listed by the check.",-- "checkResult": "blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db"++ "checkResult": "blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, media/data/reports/h15-resize-applied-20260928.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db"},{"id": "H15",@@@ -64932,7 +64837,7 @@"id": "EC5","text": "Unknowns are marked unknown, not guessed","pass": true,-- "detail": "2 unknown items recorded"++ "detail": "2 unknown items recorded; 0 things this run could not observe, each marked unknown"},{"id": "EC6",@@@ -2,37 +2,37 @@"_about": "Generated from data/requirement-ledger.json by scripts/roadmap-baseline/generate.js. Umbrella-level ledger (roadmap §22.4/§25): one row per D01-D46 requirement, every artifact re-verified against the scanned origin/main checkouts and prod-snapshot.json. Do not edit; edit the data file and regenerate.","asOf": "2026-09-23T20:30Z","generatedFrom": {-- "OpenVibe.Live": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",-- "OpenVibe.Network": "c022f86236f3e8251c924fae6c98494658b795a4",-- "OpenVibe.Shared": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",-- "OpenVibe.Media": "14cac06886649848c332cfa564aa6b3594ea09bc",-- "OpenVibe.Tools": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",-- "OpenVibe.Community": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",++ "OpenVibe.Live": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",++ "OpenVibe.Network": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",++ "OpenVibe.Shared": "919c10811cc3a4dc62fda32228f5d82a7aef1045",++ "OpenVibe.Media": "47b21bde0b4863344fafbb90109922fbf8757687",++ "OpenVibe.Tools": "9339e1500139b229e2e2f59ed7cba336dced8897",++ "OpenVibe.Community": "581d80535f4bd1081afeb7a564392d4e1e5eb000","OpenVibe.Games": "eb2d00880d3231b2c68cb1753b4542044edef1e5","OpenVibe.Sites": "304e8b12b535f4b562f23027ae84f1a5d515cc6c",-- "OpenVibe.Events": "19919ece79707eed051c3f18ab37b7fdb6d939a6",-- "OpenVibe.Chat": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",-- "OpenRe.Stream": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",-- "OpenVibe.Billing": "f24684bb84ec1670bd08670891e6742fa433a548",-- "OpenVibe.Tips": "13986b59e697d12a328a4f12e993295445ca40be",-- "OpenVibe.VIP": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",-- "OpenVibe.AI": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",-- "OpenVibe.Search": "e8511d849720534a9ffcd54b052663111e5b1e6f",-- "OpenVibe.Sources": "167085388a637eed3f0d47b3c6eabb8c9d00814d",-- "OpenVibe.Wiki": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",-- "OpenVibe.Blog": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",-- "OpenVibe.News": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",-- "OpenVibe.Reviews": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",-- "OpenVibe.Deals": "533450f9cc4a358ba50f353f06826ec3611b4ddc",-- "OpenVibe.Coupons": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",-- "OpenVibe.Trade": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",-- "OpenVibe.Codes": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",-- "OpenVibe.Host": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",-- "OpenVibe.Examples": "92eb7c3b0f50fea9f76086ed3eeda3664de93494"++ "OpenVibe.Events": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",++ "OpenVibe.Chat": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",++ "OpenRe.Stream": "d9f42407f66648c547c32989ecf862b0bc949b63",++ "OpenVibe.Billing": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",++ "OpenVibe.Tips": "3cc8c8354183008026e38a99db9ef96014663467",++ "OpenVibe.VIP": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",++ "OpenVibe.AI": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",++ "OpenVibe.Search": "04f9fd45c3c10b401704da2994700c14290b5051",++ "OpenVibe.Sources": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",++ "OpenVibe.Wiki": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",++ "OpenVibe.Blog": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",++ "OpenVibe.News": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",++ "OpenVibe.Reviews": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",++ "OpenVibe.Deals": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",++ "OpenVibe.Coupons": "168262d1baa81ab1973863d66d52ab213711ef81",++ "OpenVibe.Trade": "d515e46f7f32a6265a8e7feab49e97b9811094ed",++ "OpenVibe.Codes": "1246445c4abaddcacf4d04adf172d601700833e3",++ "OpenVibe.Host": "02c68f694a28f06e3056a05055f4515b3d4e7c64",++ "OpenVibe.Examples": "058c71a5ddee4103a314ff211c5c869f9478a23f"},"prodSnapshot": {"host": "openvibe-oregon",-- "collectedAt": "2026-09-28T03:31:00.238Z"++ "collectedAt": "2026-09-28T05:20:11.716Z"},"statuses": {"met": "the §15.0 required target is demonstrated by current evidence: a test that exercises it, and production evidence where the target is a production authority or state.",@@@ -404,11 +404,11 @@"metrics": [{"key": "shared.pins",-- "value": "25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0"++ "value": "25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0"},{"key": "shared.drift",-- "value": "31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0)"++ "value": "11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0)"}]},@@@ -449,7 +449,7 @@"metrics": [{"key": "deploy.drift",-- "value": "24 service(s) not running origin/main"++ "value": "1 service(s) behind origin/main in what runs, 4 more only in documentation and tests"}]},@@@ -2,7 +2,7 @@> Generated by `scripts/roadmap-baseline/generate.js`. Do not edit by hand; edit `data/*.json` or the extractor and regenerate.--Roadmap §22.4 and §25: every D01-D46 requirement linked to the acceptance artifact that proves it. As of 2026-09-23T20:30Z; repositories scanned at origin/main (README), production snapshot 2026-09-28 03:31 UTC.++Roadmap §22.4 and §25: every D01-D46 requirement linked to the acceptance artifact that proves it. As of 2026-09-23T20:30Z; repositories scanned at origin/main (README), production snapshot 2026-09-28 05:20 UTC.This is the umbrella layer. §25.2 also asks for an atomic, source-level ledger (`docs/implementation/requirements-ledger.yaml`, one entry per field, route family, event, capability, journey and failure state); that ledger does not exist yet, and no row here may be read as closing the requirements beneath it.@@@ -1074,7 +1074,7 @@ Blocked on the owner: Open 1936/tcp at the host firewall and at the provider edg### D42 Shared component architecture: partial--Roadmap §3.2 (W0, 2026-09-22): partial. Waves: W2, Track R. Measured this run: 25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0; 31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0).++Roadmap §3.2 (W0, 2026-09-22): partial. Waves: W2, Track R. Measured this run: 25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0; 11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0).#### D42@@@ -1155,7 +1155,7 @@ Remaining:### D45 Release compatibility and recovery: partial--Roadmap §3.2 (W0, 2026-09-22): absent. Waves: Track R, W22. Measured this run: 24 service(s) not running origin/main.++Roadmap §3.2 (W0, 2026-09-22): absent. Waves: Track R, W22. Measured this run: 1 service(s) behind origin/main in what runs, 4 more only in documentation and tests.#### D45
@@ -8,64 +8,64 @@ Deliverable 1: runtimes, ports, units, env files and repository state.
@@ -8,64 +8,64 @@ Deliverable 1: runtimes, ports, units, env files and repository state.
| Service | Repo | Stage | Ports | Units | Env file | Deployed | Databases |
| Service | Repo | Stage | Ports | Units | Env file | Deployed | Databases |
|---|---|---|---|---|---|---|---|
|---|---|---|---|---|---|---|---|
-| network | OpenVibe.Network | live | http 4000 | openvibe-network.service | /etc/openvibe/network.env | ddd87b6 | data/network.db |
-| live | OpenVibe.Live | live | http 3000, rtmp 1935/9935, mediasoup 11000-11300/udp, jsmpegRelayTls 9710-9789 | openvibe-live.socket, openvibe-live.service | /etc/openvibe/live.env | b0cc2ef | data/live.db, data/analytics.db, data/rs-companion.db |
-| media | OpenVibe.Media | live | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 6248363 | data/media.db |
+| network | OpenVibe.Network | live | http 4000 | openvibe-network.service | /etc/openvibe/network.env | ac71bb4 | data/network.db |
+| live | OpenVibe.Live | live | http 3000, rtmp 1935/9935, mediasoup 11000-11300/udp, jsmpegRelayTls 9710-9789 | openvibe-live.socket, openvibe-live.service | /etc/openvibe/live.env | 278cd40 | data/live.db, data/analytics.db, data/rs-companion.db |
+| media | OpenVibe.Media | live | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 47b21bd | data/media.db |
| tools | OpenVibe.Tools | live | gateway 4001, maps 4010, food 4011, img 4012, yt 4013, audio 4014, text 4015, docs 4016 | openvibe-tools.service, openvibe-tools-maps.service, openvibe-tools-food.service, openvibe-tools-img.service, openvibe-tools-yt.service, openvibe-tools-audio.service, openvibe-tools-text.service, openvibe-tools-docs.service | /etc/openvibe/tools.env | e55469f | apps/<app>/data/analytics.db, apps/<app>/data/jobs.db |
| tools | OpenVibe.Tools | live | gateway 4001, maps 4010, food 4011, img 4012, yt 4013, audio 4014, text 4015, docs 4016 | openvibe-tools.service, openvibe-tools-maps.service, openvibe-tools-food.service, openvibe-tools-img.service, openvibe-tools-yt.service, openvibe-tools-audio.service, openvibe-tools-text.service, openvibe-tools-docs.service | /etc/openvibe/tools.env | e55469f | apps/<app>/data/analytics.db, apps/<app>/data/jobs.db |
| games | OpenVibe.Games | live | http 8000 | openvibe-games.service | /etc/openvibe/games.env | 51d8688 | data/world.db |
| games | OpenVibe.Games | live | http 8000 | openvibe-games.service | /etc/openvibe/games.env | 51d8688 | data/world.db |
-| community | OpenVibe.Community | live | http 4200 | openvibe-community.service | /etc/openvibe/community.env | 52d923a | /var/lib/openvibe-community/community.db |
+| community | OpenVibe.Community | live | http 4200 | openvibe-community.service | /etc/openvibe/community.env | 581d805 | /var/lib/openvibe-community/community.db |
| sites | OpenVibe.Sites | placeholder-host | | - | - | 32464ec | none |
| sites | OpenVibe.Sites | placeholder-host | | - | - | 32464ec | none |
-| events | OpenVibe.Events | live | http 4300 | openvibe-events.service | /etc/openvibe/events.env | f55f7eb | /var/lib/openvibe-events/events.db |
-| chat | OpenVibe.Chat | live | http 4400 | openvibe-chat.service | /etc/openvibe/chat.env | 3aab730 | /var/lib/openvibe-chat/chat.db |
-| openre | OpenRe.Stream | shadow | http 4500, rtmp 1936 | openre-api.service, openre-session-coordinator.service, [email protected], [email protected] | /etc/openvibe/openre.env | cf423e3 | /var/lib/openre/openre.db |
-| billing | OpenVibe.Billing | shadow | http 4600 | openvibe-billing.service | /etc/openvibe/billing.env | 80f97aa | /var/lib/openvibe-billing/billing.db |
-| tips | OpenVibe.Tips | loopback | http 4610 | openvibe-tips.service | /etc/openvibe/tips.env | 1e6bfbb | /var/lib/openvibe-tips/tips.db |
-| vip | OpenVibe.VIP | loopback | http 4620 | openvibe-vip.service | /etc/openvibe/vip.env | 0fbcbb5 | /var/lib/openvibe-vip/vip.db |
-| ai | OpenVibe.AI | live-internal | http 4700 | openvibe-ai.service | /etc/openvibe/ai.env | 549bed0 | /var/lib/openvibe-ai/ai.db |
-| search | OpenVibe.Search | live | http 4710 | openvibe-search.service | /etc/openvibe/search.env | 8ed7667 | /var/lib/openvibe-search/search.db |
-| sources | OpenVibe.Sources | loopback | http 4720 | openvibe-sources.service | /etc/openvibe/sources.env | 351383e | /var/lib/openvibe-sources/sources.db |
-| wiki | OpenVibe.Wiki | live | http 4800 | openvibe-wiki.service | /etc/openvibe/wiki.env | 32a26ef | /var/lib/openvibe-wiki/wiki.db |
-| blog | OpenVibe.Blog | live | http 4810 | openvibe-blog.service | /etc/openvibe/blog.env | 21d537c | /var/lib/openvibe-blog/blog.db |
-| news | OpenVibe.News | loopback | http 4820 | openvibe-news.service | /etc/openvibe/news.env | 8ab47a6 | /var/lib/openvibe-news/news.db |
-| reviews | OpenVibe.Reviews | loopback | http 4830 | openvibe-reviews.service | /etc/openvibe/reviews.env | 1cff36b | /var/lib/openvibe-reviews/reviews.db |
-| deals | OpenVibe.Deals | loopback | http 4840 | openvibe-deals.service | /etc/openvibe/deals.env | fa0582d | /var/lib/openvibe-deals/deals.db |
-| coupons | OpenVibe.Coupons | loopback | http 4850 | openvibe-coupons.service | /etc/openvibe/coupons.env | 64835d2 | /var/lib/openvibe-coupons/coupons.db |
-| trade | OpenVibe.Trade | loopback | http 4860 | openvibe-trade.service | /etc/openvibe/trade.env | 4658447 | /var/lib/openvibe-trade/trade.db |
-| codes | OpenVibe.Codes | live | http 4900 | openvibe-codes.service | /etc/openvibe/codes.env | 64d8feb | /var/lib/openvibe-codes/codes.db |
-| host | OpenVibe.Host | loopback | http 4910 | openvibe-host.service, openvibe-backup.timer, openvibe-backup.service | /etc/openvibe/host.env | 2b63389 | /var/lib/openvibe-host-api/host.db |
+| events | OpenVibe.Events | live | http 4300 | openvibe-events.service | /etc/openvibe/events.env | 7c575cd | /var/lib/openvibe-events/events.db |
+| chat | OpenVibe.Chat | live | http 4400 | openvibe-chat.service | /etc/openvibe/chat.env | 4c517a5 | /var/lib/openvibe-chat/chat.db |
+| openre | OpenRe.Stream | shadow | http 4500, rtmp 1936 | openre-api.service, openre-session-coordinator.service, [email protected], [email protected] | /etc/openvibe/openre.env | d9f4240 | /var/lib/openre/openre.db |
+| billing | OpenVibe.Billing | shadow | http 4600 | openvibe-billing.service | /etc/openvibe/billing.env | 1f9df56 | /var/lib/openvibe-billing/billing.db |
+| tips | OpenVibe.Tips | loopback | http 4610 | openvibe-tips.service | /etc/openvibe/tips.env | 3cc8c83 | /var/lib/openvibe-tips/tips.db |
+| vip | OpenVibe.VIP | loopback | http 4620 | openvibe-vip.service | /etc/openvibe/vip.env | 63f46fa | /var/lib/openvibe-vip/vip.db |
+| ai | OpenVibe.AI | live-internal | http 4700 | openvibe-ai.service | /etc/openvibe/ai.env | f6fdbc9 | /var/lib/openvibe-ai/ai.db |
+| search | OpenVibe.Search | live | http 4710 | openvibe-search.service | /etc/openvibe/search.env | 04f9fd4 | /var/lib/openvibe-search/search.db |
+| sources | OpenVibe.Sources | loopback | http 4720 | openvibe-sources.service | /etc/openvibe/sources.env | 6e1185e | /var/lib/openvibe-sources/sources.db |
+| wiki | OpenVibe.Wiki | live | http 4800 | openvibe-wiki.service | /etc/openvibe/wiki.env | a81573f | /var/lib/openvibe-wiki/wiki.db |
+| blog | OpenVibe.Blog | live | http 4810 | openvibe-blog.service | /etc/openvibe/blog.env | 9f339e3 | /var/lib/openvibe-blog/blog.db |
+| news | OpenVibe.News | loopback | http 4820 | openvibe-news.service | /etc/openvibe/news.env | cb6d79e | /var/lib/openvibe-news/news.db |
+| reviews | OpenVibe.Reviews | loopback | http 4830 | openvibe-reviews.service | /etc/openvibe/reviews.env | 8416fcb | /var/lib/openvibe-reviews/reviews.db |
+| deals | OpenVibe.Deals | loopback | http 4840 | openvibe-deals.service | /etc/openvibe/deals.env | 0bf25e2 | /var/lib/openvibe-deals/deals.db |
+| coupons | OpenVibe.Coupons | loopback | http 4850 | openvibe-coupons.service | /etc/openvibe/coupons.env | 168262d | /var/lib/openvibe-coupons/coupons.db |
+| trade | OpenVibe.Trade | loopback | http 4860 | openvibe-trade.service | /etc/openvibe/trade.env | d515e46 | /var/lib/openvibe-trade/trade.db |
+| codes | OpenVibe.Codes | live | http 4900 | openvibe-codes.service | /etc/openvibe/codes.env | 1246445 | /var/lib/openvibe-codes/codes.db |
+| host | OpenVibe.Host | loopback | http 4910 | openvibe-host.service, openvibe-backup.timer, openvibe-backup.service | /etc/openvibe/host.env | 02c68f6 | /var/lib/openvibe-host-api/host.db |
| examples | OpenVibe.Examples | sample | | - | - | - | none |
| examples | OpenVibe.Examples | sample | | - | - | - | none |
## Scanned repositories
## Scanned repositories
| Repo | HEAD | origin/main | Source files | LOC | Test files | CI | Routes | Tables | WS servers | Timers/jobs | TODO(contract) |
| Repo | HEAD | origin/main | Source files | LOC | Test files | CI | Routes | Tables | WS servers | Timers/jobs | TODO(contract) |
|---|---|---|---|---|---|---|---|---|---|---|---|
|---|---|---|---|---|---|---|---|---|---|---|---|
-| OpenVibe.Live | 03f49b7 | 03f49b7 | 221 | 75126 | 158 | yes | 648 | 126 | 8 | 57 | 14 |
-| OpenVibe.Network | c022f86 | c022f86 | 103 | 21114 | 77 | yes | 355 | 70 | 0 | 14 | 3 |
-| OpenVibe.Shared | b5a9bd7 | b5a9bd7 | 58 | 15503 | 39 | yes | 2 | 2 | 0 | 8 | 0 |
-| OpenVibe.Media | 14cac06 | 14cac06 | 79 | 20861 | 67 | yes | 144 | 34 | 0 | 16 | 0 |
-| OpenVibe.Tools | 4f4ed6e | 4f4ed6e | 176 | 30522 | 61 | yes | 125 | 7 | 0 | 18 | 0 |
-| OpenVibe.Community | 2da3501 | 2da3501 | 66 | 12037 | 61 | yes | 180 | 35 | 0 | 9 | 0 |
+| OpenVibe.Live | 7fd7bea | 7fd7bea | 221 | 75127 | 158 | yes | 648 | 126 | 8 | 57 | 14 |
+| OpenVibe.Network | 2c1dacb | 2c1dacb | 104 | 21166 | 78 | yes | 355 | 70 | 0 | 14 | 3 |
+| OpenVibe.Shared | 919c108 | 919c108 | 59 | 15638 | 40 | yes | 2 | 2 | 0 | 8 | 0 |
+| OpenVibe.Media | 47b21bd | 47b21bd | 79 | 20902 | 68 | yes | 144 | 34 | 0 | 16 | 0 |
+| OpenVibe.Tools | 9339e15 | 9339e15 | 176 | 30522 | 61 | yes | 125 | 7 | 0 | 18 | 0 |
+| OpenVibe.Community | 581d805 | 581d805 | 66 | 12037 | 61 | yes | 180 | 35 | 0 | 9 | 0 |
| OpenVibe.Games | eb2d008 | eb2d008 | 126 | 24425 | 82 | yes | 29 | 13 | 2 | 4 | 0 |
| OpenVibe.Games | eb2d008 | eb2d008 | 126 | 24425 | 82 | yes | 29 | 13 | 2 | 4 | 0 |
| OpenVibe.Sites | 304e8b1 | 304e8b1 | 1 | 555 | 2 | yes | 0 | 0 | 0 | 0 | 0 |
| OpenVibe.Sites | 304e8b1 | 304e8b1 | 1 | 555 | 2 | yes | 0 | 0 | 0 | 0 | 0 |
-| OpenVibe.Events | 19919ec | 19919ec | 20 | 3357 | 22 | yes | 18 | 8 | 0 | 4 | 0 |
-| OpenVibe.Chat | d87c8d3 | d87c8d3 | 53 | 16898 | 48 | yes | 121 | 42 | 2 | 12 | 0 |
-| OpenRe.Stream | c77ec2a | c77ec2a | 36 | 4806 | 21 | yes | 38 | 13 | 0 | 2 | 0 |
-| OpenVibe.Billing | f24684b | f24684b | 38 | 5452 | 22 | yes | 56 | 19 | 0 | 3 | 0 |
-| OpenVibe.Tips | 13986b5 | 13986b5 | 30 | 5346 | 17 | yes | 62 | 17 | 0 | 3 | 0 |
-| OpenVibe.VIP | 95b3e19 | 95b3e19 | 30 | 4293 | 14 | yes | 44 | 13 | 0 | 2 | 0 |
-| OpenVibe.AI | 6c8b833 | 6c8b833 | 44 | 7919 | 26 | yes | 58 | 19 | 0 | 4 | 0 |
-| OpenVibe.Search | e8511d8 | e8511d8 | 18 | 2868 | 14 | yes | 21 | 11 | 0 | 4 | 0 |
-| OpenVibe.Sources | 1670853 | 1670853 | 24 | 3100 | 13 | yes | 16 | 8 | 0 | 4 | 0 |
-| OpenVibe.Wiki | 3302540 | 3302540 | 23 | 4751 | 35 | yes | 76 | 10 | 0 | 3 | 0 |
-| OpenVibe.Blog | 8a7f8eb | 8a7f8eb | 34 | 5185 | 29 | yes | 64 | 10 | 0 | 3 | 0 |
-| OpenVibe.News | 97dae43 | 97dae43 | 34 | 5251 | 19 | yes | 51 | 13 | 0 | 1 | 0 |
-| OpenVibe.Reviews | c87b344 | c87b344 | 23 | 4792 | 17 | yes | 70 | 14 | 0 | 2 | 0 |
-| OpenVibe.Deals | 533450f | 533450f | 36 | 4980 | 17 | yes | 58 | 15 | 0 | 1 | 0 |
-| OpenVibe.Coupons | b91cd79 | b91cd79 | 29 | 4289 | 16 | yes | 46 | 12 | 0 | 2 | 0 |
-| OpenVibe.Trade | 273bce7 | 273bce7 | 37 | 4562 | 16 | yes | 7 | 10 | 0 | 2 | 0 |
-| OpenVibe.Codes | 64d8feb | 64d8feb | 32 | 5072 | 34 | yes | 107 | 7 | 0 | 0 | 0 |
-| OpenVibe.Host | 6d2aaaa | 6d2aaaa | 68 | 11899 | 48 | yes | 57 | 11 | 0 | 1 | 0 |
-| OpenVibe.Examples | 92eb7c3 | 92eb7c3 | 11 | 1604 | 16 | yes | 0 | 1 | 0 | 0 | 0 |
+| OpenVibe.Events | 7c575cd | 7c575cd | 20 | 3357 | 22 | yes | 18 | 8 | 0 | 4 | 0 |
+| OpenVibe.Chat | 4c517a5 | 4c517a5 | 53 | 16898 | 48 | yes | 121 | 42 | 2 | 12 | 0 |
+| OpenRe.Stream | d9f4240 | d9f4240 | 36 | 4834 | 21 | yes | 38 | 13 | 0 | 2 | 0 |
+| OpenVibe.Billing | 1f9df56 | 1f9df56 | 38 | 5452 | 22 | yes | 56 | 19 | 0 | 3 | 0 |
+| OpenVibe.Tips | 3cc8c83 | 3cc8c83 | 30 | 5346 | 17 | yes | 62 | 17 | 0 | 3 | 0 |
+| OpenVibe.VIP | 63f46fa | 63f46fa | 30 | 4293 | 14 | yes | 44 | 13 | 0 | 2 | 0 |
+| OpenVibe.AI | f6fdbc9 | f6fdbc9 | 44 | 7919 | 26 | yes | 58 | 19 | 0 | 4 | 0 |
+| OpenVibe.Search | 04f9fd4 | 04f9fd4 | 18 | 2868 | 14 | yes | 21 | 11 | 0 | 4 | 0 |
+| OpenVibe.Sources | 6e1185e | 6e1185e | 24 | 3100 | 13 | yes | 16 | 8 | 0 | 4 | 0 |
+| OpenVibe.Wiki | a81573f | a81573f | 23 | 4751 | 35 | yes | 76 | 10 | 0 | 3 | 0 |
+| OpenVibe.Blog | 9f339e3 | 9f339e3 | 34 | 5185 | 29 | yes | 64 | 10 | 0 | 3 | 0 |
+| OpenVibe.News | cb6d79e | cb6d79e | 34 | 5252 | 19 | yes | 51 | 13 | 0 | 1 | 0 |
+| OpenVibe.Reviews | 8416fcb | 8416fcb | 23 | 4792 | 17 | yes | 70 | 14 | 0 | 2 | 0 |
+| OpenVibe.Deals | 0bf25e2 | 0bf25e2 | 36 | 4980 | 17 | yes | 58 | 15 | 0 | 1 | 0 |
+| OpenVibe.Coupons | 168262d | 168262d | 29 | 4289 | 16 | yes | 46 | 12 | 0 | 2 | 0 |
+| OpenVibe.Trade | d515e46 | d515e46 | 37 | 4562 | 16 | yes | 7 | 10 | 0 | 2 | 0 |
+| OpenVibe.Codes | 1246445 | 1246445 | 32 | 5072 | 34 | yes | 107 | 7 | 0 | 0 | 0 |
+| OpenVibe.Host | 02c68f6 | 02c68f6 | 68 | 11899 | 48 | yes | 57 | 11 | 0 | 1 | 0 |
+| OpenVibe.Examples | 058c71a | 058c71a | 11 | 1604 | 16 | yes | 0 | 1 | 0 | 0 | 0 |
LOC counts non-test source files in the scanned directories only (`server/`, `apps/`, `packages/`), not frontend assets.
LOC counts non-test source files in the scanned directories only (`server/`, `apps/`, `packages/`), not frontend assets.
@@ -76,38 +76,38 @@ LOC counts non-test source files in the scanned directories only (`server/`, `ap
@@ -76,38 +76,38 @@ LOC counts non-test source files in the scanned directories only (`server/`, `ap
|---|---|---|---|---|---|
|---|---|---|---|---|---|
| AFResume | PUBLIC | - | 2026-09-26 | 23430 KB | AlexFrison.net |
| AFResume | PUBLIC | - | 2026-09-26 | 23430 KB | AlexFrison.net |
| BreakRoomSimulator | PUBLIC | - | 2026-09-21 | 2517 KB | Simulator.Rest - The most realistic break room simulator to ever exist |
| BreakRoomSimulator | PUBLIC | - | 2026-09-21 | 2517 KB | Simulator.Rest - The most realistic break room simulator to ever exist |
-| OpenRe.Stream | PUBLIC | alpha | 2026-09-28 | 433 KB | Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health. |
-| OpenVibe.AI | PUBLIC | alpha | 2026-09-28 | 1033 KB | Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product. |
-| OpenVibe.Billing | PUBLIC | alpha | 2026-09-28 | 597 KB | The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts. |
-| OpenVibe.Blog | PUBLIC | alpha | 2026-09-28 | 722 KB | The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds. |
-| OpenVibe.Chat | PUBLIC | alpha | 2026-09-28 | 977 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. |
-| OpenVibe.Codes | PUBLIC | alpha | 2026-09-28 | 814 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. |
-| OpenVibe.Community | PUBLIC | alpha | 2026-09-28 | 1778 KB | |
-| OpenVibe.Contracts | PUBLIC | alpha | 2026-09-28 | 3315 KB | Machine-readable contracts for the whole OpenVibe network. |
-| OpenVibe.Coupons | PUBLIC | alpha | 2026-09-28 | 462 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. |
-| OpenVibe.Deals | PUBLIC | alpha | 2026-09-28 | 493 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. |
-| OpenVibe.Events | PUBLIC | alpha | 2026-09-28 | 550 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. |
-| OpenVibe.Examples | PUBLIC | alpha | 2026-09-28 | 320 KB | Executable public integration examples, tested in CI against the platform. |
-| OpenVibe.Extensions | PUBLIC | alpha | 2026-09-25 | 58 KB | First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023). |
+| OpenRe.Stream | PUBLIC | alpha | 2026-09-28 | 541 KB | Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health. |
+| OpenVibe.AI | PUBLIC | alpha | 2026-09-28 | 1037 KB | Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product. |
+| OpenVibe.Billing | PUBLIC | alpha | 2026-09-28 | 680 KB | The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts. |
+| OpenVibe.Blog | PUBLIC | alpha | 2026-09-28 | 756 KB | The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds. |
+| OpenVibe.Chat | PUBLIC | alpha | 2026-09-28 | 981 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. |
+| OpenVibe.Codes | PUBLIC | alpha | 2026-09-28 | 872 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. |
+| OpenVibe.Community | PUBLIC | alpha | 2026-09-28 | 1888 KB | |
+| OpenVibe.Contracts | PUBLIC | alpha | 2026-09-28 | 3357 KB | Machine-readable contracts for the whole OpenVibe network. |
+| OpenVibe.Coupons | PUBLIC | alpha | 2026-09-28 | 496 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. |
+| OpenVibe.Deals | PUBLIC | alpha | 2026-09-28 | 527 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. |
+| OpenVibe.Events | PUBLIC | alpha | 2026-09-28 | 627 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. |
+| OpenVibe.Examples | PUBLIC | alpha | 2026-09-28 | 329 KB | Executable public integration examples, tested in CI against the platform. |
+| OpenVibe.Extensions | PUBLIC | alpha | 2026-09-28 | 61 KB | First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023). |
| OpenVibe.Games | PUBLIC | stable | 2026-09-28 | 5693 KB | |
| OpenVibe.Games | PUBLIC | stable | 2026-09-28 | 5693 KB | |
-| OpenVibe.Host | PUBLIC | alpha | 2026-09-28 | 1384 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |
-| OpenVibe.Live | PUBLIC | stable | 2026-09-28 | 9109 KB | |
-| OpenVibe.Media | PUBLIC | beta | 2026-09-28 | 2022 KB | |
-| OpenVibe.Network | PUBLIC | stable | 2026-09-28 | 3471 KB | |
-| OpenVibe.News | PUBLIC | alpha | 2026-09-28 | 466 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. |
-| OpenVibe.Publishing | PUBLIC | alpha | 2026-09-28 | 248 KB | Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority. |
+| OpenVibe.Host | PUBLIC | alpha | 2026-09-28 | 1479 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |
+| OpenVibe.Live | PUBLIC | stable | 2026-09-28 | 8547 KB | |
+| OpenVibe.Media | PUBLIC | beta | 2026-09-28 | 2183 KB | |
+| OpenVibe.Network | PUBLIC | stable | 2026-09-28 | 3661 KB | |
+| OpenVibe.News | PUBLIC | alpha | 2026-09-28 | 575 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. |
+| OpenVibe.Publishing | PUBLIC | alpha | 2026-09-28 | 271 KB | Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority. |
| OpenVibe.Realtime | PUBLIC | closed (no code) | 2026-09-25 | 16 KB | Archived: browser realtime runs in OpenVibe.Events (/realtime/stream). Decision record for ADR-005. |
| OpenVibe.Realtime | PUBLIC | closed (no code) | 2026-09-25 | 16 KB | Archived: browser realtime runs in OpenVibe.Events (/realtime/stream). Decision record for ADR-005. |
-| OpenVibe.Reviews | PUBLIC | alpha | 2026-09-28 | 501 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |
-| OpenVibe.SDK | PUBLIC | alpha | 2026-09-28 | 706 KB | Supported browser and server clients for the OpenVibe platform. |
-| OpenVibe.Search | PUBLIC | alpha | 2026-09-28 | 318 KB | Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation. |
-| OpenVibe.Shared | PUBLIC | alpha | 2026-09-28 | 1084 KB | Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders. |
-| OpenVibe.Sites | PUBLIC | stable | 2026-09-28 | 967 KB | Static front pages for OpenVibe domains that are not full apps yet |
-| OpenVibe.Sources | PUBLIC | alpha | 2026-09-28 | 309 KB | Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states. |
-| OpenVibe.Tips | PUBLIC | alpha | 2026-09-28 | 563 KB | Creator support: tips, goals, paid messages, TTS and media requests, overlays. |
-| OpenVibe.Tools | PUBLIC | stable | 2026-09-28 | 2632 KB | |
-| OpenVibe.Trade | PUBLIC | alpha | 2026-09-28 | 418 KB | Informational watchlists, sourced market context and alerts. No custody, no order execution. |
-| OpenVibe.VIP | PUBLIC | alpha | 2026-09-28 | 510 KB | Memberships: plans, perks and benefits recognised across every OpenVibe site. |
-| OpenVibe.Wiki | PUBLIC | alpha | 2026-09-28 | 754 KB | Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed. |
+| OpenVibe.Reviews | PUBLIC | alpha | 2026-09-28 | 591 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |
+| OpenVibe.SDK | PUBLIC | alpha | 2026-09-28 | 733 KB | Supported browser and server clients for the OpenVibe platform. |
+| OpenVibe.Search | PUBLIC | alpha | 2026-09-28 | 340 KB | Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation. |
+| OpenVibe.Shared | PUBLIC | alpha | 2026-09-28 | 1260 KB | Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders. |
+| OpenVibe.Sites | PUBLIC | stable | 2026-09-28 | 970 KB | Static front pages for OpenVibe domains that are not full apps yet |
+| OpenVibe.Sources | PUBLIC | alpha | 2026-09-28 | 369 KB | Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states. |
+| OpenVibe.Tips | PUBLIC | alpha | 2026-09-28 | 583 KB | Creator support: tips, goals, paid messages, TTS and media requests, overlays. |
+| OpenVibe.Tools | PUBLIC | stable | 2026-09-28 | 2703 KB | |
+| OpenVibe.Trade | PUBLIC | alpha | 2026-09-28 | 449 KB | Informational watchlists, sourced market context and alerts. No custody, no order execution. |
+| OpenVibe.VIP | PUBLIC | alpha | 2026-09-28 | 525 KB | Memberships: plans, perks and benefits recognised across every OpenVibe site. |
+| OpenVibe.Wiki | PUBLIC | alpha | 2026-09-28 | 787 KB | Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed. |
| powerchat-devapp-demo | PUBLIC | - | 2026-09-23 | 200 KB | |
| powerchat-devapp-demo | PUBLIC | - | 2026-09-23 | 200 KB | |
| Source.OpenVibe.Games | PUBLIC | - | 2026-09-21 | 20385 KB | OpenVibe: Source Game |
| Source.OpenVibe.Games | PUBLIC | - | 2026-09-21 | 20385 KB | OpenVibe: Source Game |
@@ -11,7 +11,7 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -11,7 +11,7 @@ Deliverable 2: every table declared in code or present in production, with curre
| /opt/openvibe.blog/data/blog.db | 401 KB | 20 |
| /opt/openvibe.blog/data/blog.db | 401 KB | 20 |
| /opt/openvibe.community/data/community.db | 258 KB | 21 |
| /opt/openvibe.community/data/community.db | 258 KB | 21 |
| /opt/openvibe.games/data/legacy-import/world-before-20260923T184930Z.db | 193 KB | 13 |
| /opt/openvibe.games/data/legacy-import/world-before-20260923T184930Z.db | 193 KB | 13 |
-| /opt/openvibe.games/data/world.db | 610 KB | 15 |
+| /opt/openvibe.games/data/world.db | 635 KB | 15 |
| /opt/openvibe.live/shared/data/analytics.db | 525.4 MB | 6 |
| /opt/openvibe.live/shared/data/analytics.db | 525.4 MB | 6 |
| /opt/openvibe.live/shared/data/backups/analytics-pre-adr021-2026-09-23.db | 1.76 GB | 6 |
| /opt/openvibe.live/shared/data/backups/analytics-pre-adr021-2026-09-23.db | 1.76 GB | 6 |
| /opt/openvibe.live/shared/data/backups/live-20260926-072748.db | 284.0 MB | 161 |
| /opt/openvibe.live/shared/data/backups/live-20260926-072748.db | 284.0 MB | 161 |
@@ -20,12 +20,13 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -20,12 +20,13 @@ Deliverable 2: every table declared in code or present in production, with curre
| /opt/openvibe.live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db | 284.7 MB | 162 |
| /opt/openvibe.live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db | 284.7 MB | 162 |
| /opt/openvibe.live/shared/data/hobo.db | 0 B | 0 |
| /opt/openvibe.live/shared/data/hobo.db | 0 B | 0 |
| /opt/openvibe.live/shared/data/live-before-rs-slots-20260924T0153Z.db | 279.2 MB | 151 |
| /opt/openvibe.live/shared/data/live-before-rs-slots-20260924T0153Z.db | 279.2 MB | 151 |
-| /opt/openvibe.live/shared/data/live.db | 284.7 MB | 162 |
+| /opt/openvibe.live/shared/data/live.db | 284.7 MB | 163 |
| /opt/openvibe.live/shared/data/openvibe.db | 0 B | 0 |
| /opt/openvibe.live/shared/data/openvibe.db | 0 B | 0 |
| /opt/openvibe.live/shared/data/rs-companion.db | 8.6 MB | 33 |
| /opt/openvibe.live/shared/data/rs-companion.db | 8.6 MB | 33 |
| /opt/openvibe.media/data/backups/owner-subject-20260923.media.db | 9.5 MB | 23 |
| /opt/openvibe.media/data/backups/owner-subject-20260923.media.db | 9.5 MB | 23 |
| /opt/openvibe.media/data/media.db | 11.7 MB | 36 |
| /opt/openvibe.media/data/media.db | 11.7 MB | 36 |
| /opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db | 11.3 MB | 27 |
| /opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db | 11.3 MB | 27 |
+| /opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db | 11.7 MB | 36 |
| /opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db | 292.4 MB | 66 |
| /opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db | 292.4 MB | 66 |
| /opt/openvibe.network/data/backups/network-pre-follows-20260926.db | 292.1 MB | 63 |
| /opt/openvibe.network/data/backups/network-pre-follows-20260926.db | 292.1 MB | 63 |
| /opt/openvibe.network/data/network-pre-refresh-hash-2026-09-24.db | 279.1 MB | 52 |
| /opt/openvibe.network/data/network-pre-refresh-hash-2026-09-24.db | 279.1 MB | 52 |
@@ -59,8 +60,8 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -59,8 +60,8 @@ Deliverable 2: every table declared in code or present in production, with curre
| /opt/openvibe.tools/backups/analytics-2026-09-23/text.analytics.db | 9.5 MB | 6 |
| /opt/openvibe.tools/backups/analytics-2026-09-23/text.analytics.db | 9.5 MB | 6 |
| /opt/openvibe.tools/backups/analytics-2026-09-23/yt.analytics.db | 975 KB | 6 |
| /opt/openvibe.tools/backups/analytics-2026-09-23/yt.analytics.db | 975 KB | 6 |
| /var/lib/openre/openre.db | 209 KB | 14 |
| /var/lib/openre/openre.db | 209 KB | 14 |
-| /var/lib/openvibe-ai/ai.db | 115.8 MB | 20 |
-| /var/lib/openvibe-billing/billing.db | 831 KB | 19 |
+| /var/lib/openvibe-ai/ai.db | 118.6 MB | 20 |
+| /var/lib/openvibe-billing/billing.db | 840 KB | 19 |
| /var/lib/openvibe-billing/live-snapshot-202609230121.db | 279.2 MB | 146 |
| /var/lib/openvibe-billing/live-snapshot-202609230121.db | 279.2 MB | 146 |
| /var/lib/openvibe-blog/blog.db | 1.9 MB | 24 |
| /var/lib/openvibe-blog/blog.db | 1.9 MB | 24 |
| /var/lib/openvibe-chat/chat.db | 25.3 MB | 42 |
| /var/lib/openvibe-chat/chat.db | 25.3 MB | 42 |
@@ -69,16 +70,16 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -69,16 +70,16 @@ Deliverable 2: every table declared in code or present in production, with curre
| /var/lib/openvibe-chat/live-snapshot-0159.db | 279.2 MB | 147 |
| /var/lib/openvibe-chat/live-snapshot-0159.db | 279.2 MB | 147 |
| /var/lib/openvibe-chat/rehearsal.db | 360 KB | 30 |
| /var/lib/openvibe-chat/rehearsal.db | 360 KB | 30 |
| /var/lib/openvibe-codes/codes.db | 111 KB | 7 |
| /var/lib/openvibe-codes/codes.db | 111 KB | 7 |
-| /var/lib/openvibe-community/community.db | 5.3 MB | 36 |
+| /var/lib/openvibe-community/community.db | 5.5 MB | 36 |
| /var/lib/openvibe-community/community.pre-c24-20260925T185117Z.db | 2.2 MB | 29 |
| /var/lib/openvibe-community/community.pre-c24-20260925T185117Z.db | 2.2 MB | 29 |
| /var/lib/openvibe-community/community.pre-c24b-20260925T185400Z.db | 2.2 MB | 29 |
| /var/lib/openvibe-community/community.pre-c24b-20260925T185400Z.db | 2.2 MB | 29 |
| /var/lib/openvibe-community/community.pre-c24c-20260925T185425Z.db | 2.2 MB | 29 |
| /var/lib/openvibe-community/community.pre-c24c-20260925T185425Z.db | 2.2 MB | 29 |
| /var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db | 2.0 MB | 20 |
| /var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db | 2.0 MB | 20 |
| /var/lib/openvibe-coupons/coupons.db | 197 KB | 14 |
| /var/lib/openvibe-coupons/coupons.db | 197 KB | 14 |
| /var/lib/openvibe-deals/deals.db | 266 KB | 19 |
| /var/lib/openvibe-deals/deals.db | 266 KB | 19 |
-| /var/lib/openvibe-events/events.db | 23.5 MB | 8 |
+| /var/lib/openvibe-events/events.db | 23.9 MB | 8 |
| /var/lib/openvibe-host-api/host.db | 160 KB | 12 |
| /var/lib/openvibe-host-api/host.db | 160 KB | 12 |
-| /var/lib/openvibe-news/news.db | 508 KB | 23 |
+| /var/lib/openvibe-news/news.db | 512 KB | 23 |
| /var/lib/openvibe-reviews/reviews.db | 311 KB | 23 |
| /var/lib/openvibe-reviews/reviews.db | 311 KB | 23 |
| /var/lib/openvibe-search/search.db | 13.3 MB | 21 |
| /var/lib/openvibe-search/search.db | 13.3 MB | 21 |
| /var/lib/openvibe-sources/sources.db | 106 KB | 8 |
| /var/lib/openvibe-sources/sources.db | 106 KB | 8 |
@@ -255,7 +256,7 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -255,7 +256,7 @@ Deliverable 2: every table declared in code or present in production, with curre
| dev_usage_windows | server/developer/usage.js:50 | network.db | OpenVibe.Network | keep | W1 (module split) |
| dev_usage_windows | server/developer/usage.js:50 | network.db | OpenVibe.Network | keep | W1 (module split) |
| email_delivery_log | server/db/database.js:222 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |
| email_delivery_log | server/db/database.js:222 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |
| email_verification_tokens | server/db/database.js:438 | network.db | OpenVibe.Network | keep | W1 (module split) |
| email_verification_tokens | server/db/database.js:438 | network.db | OpenVibe.Network | keep | W1 (module split) |
-| follow_import_holds | server/identity/follows.js:57 | network.db | OpenVibe.Network | keep | W1 (module split) |
+| follow_import_holds | server/identity/follows.js:63 | network.db | OpenVibe.Network | keep | W1 (module split) |
| follows | server/db/database.js:306 | network.db | OpenVibe.Network | keep | W1 (module split) |
| follows | server/db/database.js:306 | network.db | OpenVibe.Network | keep | W1 (module split) |
| frame_cache | server/frame/service.js:68 | network.db | OpenVibe.Network | keep | W1 (module split) |
| frame_cache | server/frame/service.js:68 | network.db | OpenVibe.Network | keep | W1 (module split) |
| frame_hits | server/frame/service.js:70 | network.db | OpenVibe.Network | keep | W1 (module split) |
| frame_hits | server/frame/service.js:70 | network.db | OpenVibe.Network | keep | W1 (module split) |
@@ -288,7 +289,7 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -288,7 +289,7 @@ Deliverable 2: every table declared in code or present in production, with curre
| url_registry | server/db/database.js:165, server/url-registry.js:7 | network.db | OpenVibe.Network | keep | W1 (module split) |
| url_registry | server/db/database.js:165, server/url-registry.js:7 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_blocks | server/identity/blocks.js:41 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_blocks | server/identity/blocks.js:41 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_effects | server/db/database.js:295 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_effects | server/db/database.js:295 | network.db | OpenVibe.Network | keep | W1 (module split) |
-| user_follows | server/identity/follows.js:42 | network.db | OpenVibe.Network | keep | W1 (module split) |
+| user_follows | server/identity/follows.js:48 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_history | server/history/routes.js:26 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_history | server/history/routes.js:26 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_module_retirements | server/identity/modules.js:91 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_module_retirements | server/identity/modules.js:91 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_module_revisions | server/identity/modules.js:84 | network.db | OpenVibe.Network | keep | W1 (module split) |
| user_module_revisions | server/identity/modules.js:84 | network.db | OpenVibe.Network | keep | W1 (module split) |
@@ -497,8 +497,8 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -497,8 +497,8 @@ Owner = the repository whose code answers the route; target = the authority it b
| DELETE | /api/streams/:id | server/streaming/routes.js:2166 | | keep |
| DELETE | /api/streams/:id | server/streaming/routes.js:2166 | | keep |
| GET | /api/streams/:id | server/streaming/routes.js:1923 | | keep |
| GET | /api/streams/:id | server/streaming/routes.js:1923 | | keep |
| PUT | /api/streams/:id | server/streaming/routes.js:2115 | | keep |
| PUT | /api/streams/:id | server/streaming/routes.js:2115 | | keep |
-| GET | /api/streams/:id/call | server/streaming/routes.js:2491 | | keep |
-| PUT | /api/streams/:id/call | server/streaming/routes.js:2452 | | keep |
+| GET | /api/streams/:id/call | server/streaming/routes.js:2492 | | keep |
+| PUT | /api/streams/:id/call | server/streaming/routes.js:2453 | | keep |
| GET | /api/streams/:id/endpoint | server/streaming/routes.js:2213 | | keep |
| GET | /api/streams/:id/endpoint | server/streaming/routes.js:2213 | | keep |
| POST | /api/streams/:id/follow | server/streaming/routes.js:2354 | | keep |
| POST | /api/streams/:id/follow | server/streaming/routes.js:2354 | | keep |
| POST | /api/streams/:id/heartbeat | server/streaming/routes.js:2311 | | keep |
| POST | /api/streams/:id/heartbeat | server/streaming/routes.js:2311 | | keep |
@@ -511,7 +511,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -511,7 +511,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| PUT | /api/streams/channel/:username/about | server/streaming/routes.js:808 | | keep |
| PUT | /api/streams/channel/:username/about | server/streaming/routes.js:808 | | keep |
| GET | /api/streams/channel/:username/bio-en | server/streaming/routes.js:789 | | keep |
| GET | /api/streams/channel/:username/bio-en | server/streaming/routes.js:789 | | keep |
| GET | /api/streams/channel/:username/clips-taken | server/streaming/routes.js:595 | | keep |
| GET | /api/streams/channel/:username/clips-taken | server/streaming/routes.js:595 | | keep |
-| POST | /api/streams/channel/:username/follow | server/streaming/routes.js:2402 | | keep |
+| POST | /api/streams/channel/:username/follow | server/streaming/routes.js:2403 | | keep |
| GET | /api/streams/channel/:username/game | server/streaming/routes.js:1020 | | keep |
| GET | /api/streams/channel/:username/game | server/streaming/routes.js:1020 | | keep |
| GET | /api/streams/channel/:username/live | server/streaming/routes.js:639 | | keep |
| GET | /api/streams/channel/:username/live | server/streaming/routes.js:639 | | keep |
| GET | /api/streams/channel/:username/popular | server/streaming/routes.js:569 | | keep |
| GET | /api/streams/channel/:username/popular | server/streaming/routes.js:569 | | keep |
@@ -532,7 +532,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -532,7 +532,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| GET | /api/streams/recent | server/streaming/routes.js:1188 | | keep |
| GET | /api/streams/recent | server/streaming/routes.js:1188 | | keep |
| GET | /api/streams/recent-vods | server/streaming/routes.js:1259 | | keep |
| GET | /api/streams/recent-vods | server/streaming/routes.js:1259 | | keep |
| GET | /api/streams/recently-online | server/streaming/routes.js:1205 | | keep |
| GET | /api/streams/recently-online | server/streaming/routes.js:1205 | | keep |
-| GET | /api/streams/rtmp-proxy/:streamId.flv | server/streaming/routes.js:2512 | | keep |
+| GET | /api/streams/rtmp-proxy/:streamId.flv | server/streaming/routes.js:2513 | | keep |
| GET | /api/streams/setup-progress | server/streaming/routes.js:1586 | | keep |
| GET | /api/streams/setup-progress | server/streaming/routes.js:1586 | | keep |
| GET | /api/streams/voice-channels | server/streaming/routes.js:1289 | | keep |
| GET | /api/streams/voice-channels | server/streaming/routes.js:1289 | | keep |
| POST | /api/streams/voice-channels | server/streaming/routes.js:1310 | | keep |
| POST | /api/streams/voice-channels | server/streaming/routes.js:1310 | | keep |
@@ -727,12 +727,12 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -727,12 +727,12 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /:id/cancel | server/identity/account-data.js:565 | | keep |
| POST | /:id/cancel | server/identity/account-data.js:565 | | keep |
| POST | /:id/dismiss | server/notifications/routes.js:100 | | keep |
| POST | /:id/dismiss | server/notifications/routes.js:100 | | keep |
| POST | /:id/read | server/notifications/routes.js:67 | | keep |
| POST | /:id/read | server/notifications/routes.js:67 | | keep |
-| GET | /.well-known/openvibe | server/registry/ecosystem.js:317 | | keep |
-| GET | /.well-known/web-identity | server/index.js:755 | | keep |
+| GET | /.well-known/openvibe | server/registry/ecosystem.js:326 | | keep |
+| GET | /.well-known/web-identity | server/index.js:757 | | keep |
| POST | /account-deletions/:id/confirmations | server/identity/account-data.js:547 | | keep |
| POST | /account-deletions/:id/confirmations | server/identity/account-data.js:547 | | keep |
| POST | /account-exports/:id/parts | server/identity/account-data.js:539 | | keep |
| POST | /account-exports/:id/parts | server/identity/account-data.js:539 | | keep |
| POST | /admin | server/setup/routes.js:114 | | keep |
| POST | /admin | server/setup/routes.js:114 | | keep |
-| GET | /api/.well-known/jwks | server/index.js:500 | | keep |
+| GET | /api/.well-known/jwks | server/index.js:502 | | keep |
| GET | /api/admin/domains | server/domains/routes.js:176 | | keep |
| GET | /api/admin/domains | server/domains/routes.js:176 | | keep |
| GET | /api/admin/domains | server/domains/routes.js:197 | | keep |
| GET | /api/admin/domains | server/domains/routes.js:197 | | keep |
| POST | /api/admin/domains | server/domains/routes.js:224 | | keep |
| POST | /api/admin/domains | server/domains/routes.js:224 | | keep |
@@ -759,7 +759,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -759,7 +759,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /api/admin/mods/:id/revoke | server/identity/mod-principals.js:186 | | keep |
| POST | /api/admin/mods/:id/revoke | server/identity/mod-principals.js:186 | | keep |
| POST | /api/admin/mods/:id/revoke | server/identity/mod-principals.js:210 | | keep |
| POST | /api/admin/mods/:id/revoke | server/identity/mod-principals.js:210 | | keep |
| GET | /api/admin/operator-checklist | server/admin/operator-checklist.js:70 | | keep |
| GET | /api/admin/operator-checklist | server/admin/operator-checklist.js:70 | | keep |
-| GET | /api/admin/ssh-info | server/index.js:627 | | keep |
+| GET | /api/admin/ssh-info | server/index.js:629 | | keep |
| GET | /api/admin/themes | server/themes/routes.js:64 | | keep |
| GET | /api/admin/themes | server/themes/routes.js:64 | | keep |
| GET | /api/admin/themes | server/themes/routes.js:233 | | keep |
| GET | /api/admin/themes | server/themes/routes.js:233 | | keep |
| POST | /api/admin/themes | server/themes/routes.js:217 | | keep |
| POST | /api/admin/themes | server/themes/routes.js:217 | | keep |
@@ -801,8 +801,8 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -801,8 +801,8 @@ Owner = the repository whose code answers the route; target = the authority it b
| GET | /api/auth/users/:id/card | server/auth/routes.js:777 | | keep |
| GET | /api/auth/users/:id/card | server/auth/routes.js:777 | | keep |
| DELETE | /api/auth/users/:id/follow | server/auth/routes.js:860 | | keep |
| DELETE | /api/auth/users/:id/follow | server/auth/routes.js:860 | | keep |
| POST | /api/auth/users/:id/follow | server/auth/routes.js:829 | | keep |
| POST | /api/auth/users/:id/follow | server/auth/routes.js:829 | | keep |
-| GET | /api/brand | server/index.js:529 | | keep |
-| GET | /api/catalog.json | server/index.js:593 | | keep |
+| GET | /api/brand | server/index.js:531 | | keep |
+| GET | /api/catalog.json | server/index.js:595 | | keep |
| GET | /api/chrome | server/frame/service.js:178 | | keep |
| GET | /api/chrome | server/frame/service.js:178 | | keep |
| POST | /api/chrome/hit | server/frame/service.js:191 | | keep |
| POST | /api/chrome/hit | server/frame/service.js:191 | | keep |
| GET | /api/domains | server/domains/routes.js:176 | | keep |
| GET | /api/domains | server/domains/routes.js:176 | | keep |
@@ -814,7 +814,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -814,7 +814,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /api/domains/check | server/domains/routes.js:217 | | keep |
| POST | /api/domains/check | server/domains/routes.js:217 | | keep |
| GET | /api/frame | server/frame/service.js:178 | | keep |
| GET | /api/frame | server/frame/service.js:178 | | keep |
| POST | /api/frame/hit | server/frame/service.js:191 | | keep |
| POST | /api/frame/hit | server/frame/service.js:191 | | keep |
-| GET | /api/health | server/index.js:515 | | keep |
+| GET | /api/health | server/index.js:517 | | keep |
| DELETE | /api/history | server/history/routes.js:143 | | keep |
| DELETE | /api/history | server/history/routes.js:143 | | keep |
| GET | /api/history | server/history/routes.js:92 | | keep |
| GET | /api/history | server/history/routes.js:92 | | keep |
| POST | /api/history | server/history/routes.js:108 | | keep |
| POST | /api/history | server/history/routes.js:108 | | keep |
@@ -836,8 +836,8 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -836,8 +836,8 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /api/push/subscribe | server/push/routes.js:17 | | keep |
| POST | /api/push/subscribe | server/push/routes.js:17 | | keep |
| POST | /api/push/unsubscribe | server/push/routes.js:29 | | keep |
| POST | /api/push/unsubscribe | server/push/routes.js:29 | | keep |
| GET | /api/push/vapid-key | server/push/routes.js:10 | | keep |
| GET | /api/push/vapid-key | server/push/routes.js:10 | | keep |
-| GET | /api/ready | server/index.js:525 | | keep |
-| GET | /api/sso/targets | server/index.js:575 | | keep |
+| GET | /api/ready | server/index.js:527 | | keep |
+| GET | /api/sso/targets | server/index.js:577 | | keep |
| GET | /api/themes | server/themes/routes.js:64 | | keep |
| GET | /api/themes | server/themes/routes.js:64 | | keep |
| GET | /api/themes | server/themes/routes.js:233 | | keep |
| GET | /api/themes | server/themes/routes.js:233 | | keep |
| POST | /api/themes | server/themes/routes.js:217 | | keep |
| POST | /api/themes | server/themes/routes.js:217 | | keep |
@@ -851,23 +851,23 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -851,23 +851,23 @@ Owner = the repository whose code answers the route; target = the authority it b
| GET | /api/themes/me/submissions | server/themes/routes.js:133 | | keep |
| GET | /api/themes/me/submissions | server/themes/routes.js:133 | | keep |
| GET | /api/v1/changelog | server/updates/routes.js:51 | | keep |
| GET | /api/v1/changelog | server/updates/routes.js:51 | | keep |
| GET | /api/v1/creators/:creator/analytics | server/analytics/creators.js:121 | | keep |
| GET | /api/v1/creators/:creator/analytics | server/analytics/creators.js:121 | | keep |
-| GET | /api/v1/follows | server/identity/follows.js:262 | | keep |
-| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:278 | | keep |
-| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:337 | | keep |
-| GET | /api/v1/follows/:type/:target | server/identity/follows.js:291 | | keep |
-| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:268 | | keep |
-| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:324 | | keep |
-| GET | /api/v1/follows/:type/:target/followers | server/identity/follows.js:304 | | keep |
+| GET | /api/v1/follows | server/identity/follows.js:271 | | keep |
+| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:287 | | keep |
+| DELETE | /api/v1/follows/:type/:target | server/identity/follows.js:346 | | keep |
+| GET | /api/v1/follows/:type/:target | server/identity/follows.js:300 | | keep |
+| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:277 | | keep |
+| PUT | /api/v1/follows/:type/:target | server/identity/follows.js:333 | | keep |
+| GET | /api/v1/follows/:type/:target/followers | server/identity/follows.js:313 | | keep |
| GET | /api/v1/me/blocks | server/identity/blocks.js:159 | | keep |
| GET | /api/v1/me/blocks | server/identity/blocks.js:159 | | keep |
| DELETE | /api/v1/me/blocks/:target | server/identity/blocks.js:175 | | keep |
| DELETE | /api/v1/me/blocks/:target | server/identity/blocks.js:175 | | keep |
| PUT | /api/v1/me/blocks/:target | server/identity/blocks.js:164 | | keep |
| PUT | /api/v1/me/blocks/:target | server/identity/blocks.js:164 | | keep |
-| GET | /api/v1/me/follows | server/identity/follows.js:262 | | keep |
-| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:278 | | keep |
-| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:337 | | keep |
-| GET | /api/v1/me/follows/:type/:target | server/identity/follows.js:291 | | keep |
-| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:268 | | keep |
-| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:324 | | keep |
-| GET | /api/v1/me/follows/:type/:target/followers | server/identity/follows.js:304 | | keep |
+| GET | /api/v1/me/follows | server/identity/follows.js:271 | | keep |
+| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:287 | | keep |
+| DELETE | /api/v1/me/follows/:type/:target | server/identity/follows.js:346 | | keep |
+| GET | /api/v1/me/follows/:type/:target | server/identity/follows.js:300 | | keep |
+| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:277 | | keep |
+| PUT | /api/v1/me/follows/:type/:target | server/identity/follows.js:333 | | keep |
+| GET | /api/v1/me/follows/:type/:target/followers | server/identity/follows.js:313 | | keep |
| GET | /api/v1/projects | server/developer/routes.js:89 | | keep |
| GET | /api/v1/projects | server/developer/routes.js:89 | | keep |
| POST | /api/v1/projects | server/developer/routes.js:88 | | keep |
| POST | /api/v1/projects | server/developer/routes.js:88 | | keep |
| GET | /api/v1/projects/:project | server/developer/routes.js:90 | | keep |
| GET | /api/v1/projects/:project | server/developer/routes.js:90 | | keep |
@@ -900,22 +900,22 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -900,22 +900,22 @@ Owner = the repository whose code answers the route; target = the authority it b
| GET | /api/v1/projects/:project/usage | server/developer/routes.js:125 | | keep |
| GET | /api/v1/projects/:project/usage | server/developer/routes.js:125 | | keep |
| GET | /api/v1/projects/catalog | server/developer/routes.js:82 | | keep |
| GET | /api/v1/projects/catalog | server/developer/routes.js:82 | | keep |
| POST | /api/v1/realtime/ticket | server/auth/realtime-ticket.js:63 | | keep |
| POST | /api/v1/realtime/ticket | server/auth/realtime-ticket.js:63 | | keep |
-| GET | /api/v1/registry | server/registry/ecosystem.js:318 | | keep |
-| GET | /api/v1/registry/capabilities | server/registry/ecosystem.js:343 | | keep |
-| GET | /api/v1/registry/capabilities/:id | server/registry/ecosystem.js:348 | | keep |
-| GET | /api/v1/registry/categories | server/registry/ecosystem.js:319 | | keep |
-| GET | /api/v1/registry/categories/:id | server/registry/ecosystem.js:320 | | keep |
-| GET | /api/v1/registry/contracts | server/registry/ecosystem.js:354 | | keep |
-| GET | /api/v1/registry/domains/:domain | server/registry/ecosystem.js:337 | | keep |
-| GET | /api/v1/registry/featured | server/registry/ecosystem.js:325 | | keep |
-| GET | /api/v1/registry/health | server/registry/ecosystem.js:372 | | keep |
-| GET | /api/v1/registry/namespaces | server/registry/ecosystem.js:353 | | keep |
-| GET | /api/v1/registry/releases | server/registry/ecosystem.js:371 | | keep |
-| GET | /api/v1/registry/search | server/registry/ecosystem.js:378 | | keep |
-| GET | /api/v1/registry/services | server/registry/ecosystem.js:326 | | keep |
-| GET | /api/v1/registry/services/:id | server/registry/ecosystem.js:332 | | keep |
-| GET | /api/v1/registry/topics | server/registry/ecosystem.js:355 | | keep |
-| GET | /api/v1/registry/topics/:topic | server/registry/ecosystem.js:366 | | keep |
+| GET | /api/v1/registry | server/registry/ecosystem.js:327 | | keep |
+| GET | /api/v1/registry/capabilities | server/registry/ecosystem.js:352 | | keep |
+| GET | /api/v1/registry/capabilities/:id | server/registry/ecosystem.js:357 | | keep |
+| GET | /api/v1/registry/categories | server/registry/ecosystem.js:328 | | keep |
+| GET | /api/v1/registry/categories/:id | server/registry/ecosystem.js:329 | | keep |
+| GET | /api/v1/registry/contracts | server/registry/ecosystem.js:363 | | keep |
+| GET | /api/v1/registry/domains/:domain | server/registry/ecosystem.js:346 | | keep |
+| GET | /api/v1/registry/featured | server/registry/ecosystem.js:334 | | keep |
+| GET | /api/v1/registry/health | server/registry/ecosystem.js:381 | | keep |
+| GET | /api/v1/registry/namespaces | server/registry/ecosystem.js:362 | | keep |
+| GET | /api/v1/registry/releases | server/registry/ecosystem.js:380 | | keep |
+| GET | /api/v1/registry/search | server/registry/ecosystem.js:387 | | keep |
+| GET | /api/v1/registry/services | server/registry/ecosystem.js:335 | | keep |
+| GET | /api/v1/registry/services/:id | server/registry/ecosystem.js:341 | | keep |
+| GET | /api/v1/registry/topics | server/registry/ecosystem.js:364 | | keep |
+| GET | /api/v1/registry/topics/:topic | server/registry/ecosystem.js:375 | | keep |
| GET | /api/v1/staff/capabilities | server/admin/staff-api.js:34 | | keep |
| GET | /api/v1/staff/capabilities | server/admin/staff-api.js:34 | | keep |
| GET | /api/v1/staff/moderation-audit | server/admin/moderation-audit.js:140 | | keep |
| GET | /api/v1/staff/moderation-audit | server/admin/moderation-audit.js:140 | | keep |
| GET | /api/v1/staff/moderators | server/admin/staff-api.js:45 | | keep |
| GET | /api/v1/staff/moderators | server/admin/staff-api.js:45 | | keep |
@@ -1007,7 +1007,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1007,7 +1007,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /internal/users/bulk | server/internal/routes.js:140 | | keep |
| POST | /internal/users/bulk | server/internal/routes.js:140 | | keep |
| GET | /internal/users/by-username/:username | server/internal/routes.js:129 | | keep |
| GET | /internal/users/by-username/:username | server/internal/routes.js:129 | | keep |
| POST | /internal/verify-token | server/internal/routes.js:94 | | keep |
| POST | /internal/verify-token | server/internal/routes.js:94 | | keep |
-| GET | /llms.txt | server/index.js:733 | | keep |
+| GET | /llms.txt | server/index.js:735 | | keep |
| GET | /me | server/coins/routes.js:18 | | keep |
| GET | /me | server/coins/routes.js:18 | | keep |
| GET | /me/history | server/coins/routes.js:24 | | keep |
| GET | /me/history | server/coins/routes.js:24 | | keep |
| POST | /merge | server/identity/account-merge.js:293 | | keep |
| POST | /merge | server/identity/account-merge.js:293 | | keep |
@@ -1028,7 +1028,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1028,7 +1028,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /oauth/token | server/auth/oauth-routes.js:215 | | keep |
| POST | /oauth/token | server/auth/oauth-routes.js:215 | | keep |
| GET | /oauth/userinfo | server/auth/oauth-routes.js:426 | | keep |
| GET | /oauth/userinfo | server/auth/oauth-routes.js:426 | | keep |
| POST | /oauth/userinfo | server/auth/oauth-routes.js:427 | | keep |
| POST | /oauth/userinfo | server/auth/oauth-routes.js:427 | | keep |
-| GET | /openvibe-sw.js | server/index.js:778 | | keep |
+| GET | /openvibe-sw.js | server/index.js:780 | | keep |
| GET | /overview | server/admin/analytics-routes.js:75 | | keep |
| GET | /overview | server/admin/analytics-routes.js:75 | | keep |
| GET | /preferences | server/notifications/routes.js:121 | | keep |
| GET | /preferences | server/notifications/routes.js:121 | | keep |
| PUT | /preferences | server/notifications/routes.js:132 | | keep |
| PUT | /preferences | server/notifications/routes.js:132 | | keep |
@@ -1043,12 +1043,12 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1043,12 +1043,12 @@ Owner = the repository whose code answers the route; target = the authority it b
| GET | /service/:name | server/admin/analytics-routes.js:224 | | keep |
| GET | /service/:name | server/admin/analytics-routes.js:224 | | keep |
| GET | /settings | server/admin/routes.js:303 | | keep |
| GET | /settings | server/admin/routes.js:303 | | keep |
| PUT | /settings | server/admin/routes.js:341 | | keep |
| PUT | /settings | server/admin/routes.js:341 | | keep |
-| GET | /sso/check | server/index.js:762 | | keep |
+| GET | /sso/check | server/index.js:764 | | keep |
| GET | /status | server/setup/routes.js:91 | | keep |
| GET | /status | server/setup/routes.js:91 | | keep |
| GET | /status | server/status/routes.js:262 | | keep |
| GET | /status | server/status/routes.js:262 | | keep |
| POST | /test | server/discord/routes.js:92 | | keep |
| POST | /test | server/discord/routes.js:92 | | keep |
| POST | /test-live | server/discord/routes.js:102 | | keep |
| POST | /test-live | server/discord/routes.js:102 | | keep |
-| GET | /tos | server/index.js:589 | | keep |
+| GET | /tos | server/index.js:591 | | keep |
| GET | /unread-by-category | server/notifications/routes.js:47 | | keep |
| GET | /unread-by-category | server/notifications/routes.js:47 | | keep |
| GET | /unread-count | server/notifications/routes.js:37 | | keep |
| GET | /unread-count | server/notifications/routes.js:37 | | keep |
| GET | /updates | server/updates/routes.js:59 | | keep |
| GET | /updates | server/updates/routes.js:59 | | keep |
@@ -1070,7 +1070,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1070,7 +1070,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| GET | /verification-keys | server/admin/routes.js:899 | | keep |
| GET | /verification-keys | server/admin/routes.js:899 | | keep |
| POST | /verification-keys | server/admin/routes.js:908 | | keep |
| POST | /verification-keys | server/admin/routes.js:908 | | keep |
| DELETE | /verification-keys/:id | server/admin/routes.js:956 | | keep |
| DELETE | /verification-keys/:id | server/admin/routes.js:956 | | keep |
-| GET | /verify-email | server/index.js:745 | | keep |
+| GET | /verify-email | server/index.js:747 | | keep |
## OpenVibe.Shared
## OpenVibe.Shared
@@ -1083,7 +1083,7 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1083,7 +1083,7 @@ Owner = the repository whose code answers the route; target = the authority it b
| Method | Path | Source | Target | Disposition |
| Method | Path | Source | Target | Disposition |
|---|---|---|---|---|
|---|---|---|---|---|
-| GET | /api/ready | server/observability.js:156 | | keep |
+| GET | /api/ready | server/observability.js:158 | | keep |
| GET | /api/v1/:app/admin/storage | server/admin/routes.js:102 | | keep |
| GET | /api/v1/:app/admin/storage | server/admin/routes.js:102 | | keep |
| GET | /api/v1/:app/admin/storage/buckets | server/admin/routes.js:692 | | keep |
| GET | /api/v1/:app/admin/storage/buckets | server/admin/routes.js:692 | | keep |
| GET | /api/v1/:app/admin/storage/holds | server/admin/routes.js:590 | | keep |
| GET | /api/v1/:app/admin/storage/holds | server/admin/routes.js:590 | | keep |
@@ -1731,8 +1731,8 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1731,8 +1731,8 @@ Owner = the repository whose code answers the route; target = the authority it b
| Method | Path | Source | Target | Disposition |
| Method | Path | Source | Target | Disposition |
|---|---|---|---|---|
|---|---|---|---|---|
| GET | / | server/ui/routes.js:86 | | keep |
| GET | / | server/ui/routes.js:86 | | keep |
-| GET | /api/health | server/app.js:48 | | keep |
-| GET | /api/ready | server/app.js:61 | | keep |
+| GET | /api/health | server/app.js:50 | | keep |
+| GET | /api/ready | server/app.js:110 | | keep |
| GET | /auth/callback | server/auth/sso.js:71 | | keep |
| GET | /auth/callback | server/auth/sso.js:71 | | keep |
| GET | /auth/login | server/auth/sso.js:64 | | keep |
| GET | /auth/login | server/auth/sso.js:64 | | keep |
| GET | /auth/logout | server/auth/sso.js:91 | | keep |
| GET | /auth/logout | server/auth/sso.js:91 | | keep |
@@ -1746,8 +1746,8 @@ Owner = the repository whose code answers the route; target = the authority it b
@@ -1746,8 +1746,8 @@ Owner = the repository whose code answers the route; target = the authority it b
| POST | /destinations/:id/stop | server/api/v1.js:250 | | keep |
| POST | /destinations/:id/stop | server/api/v1.js:250 | | keep |
| POST | /destinations/:id/test | server/api/v1.js:237 | | keep |
| POST | /destinations/:id/test | server/api/v1.js:237 | | keep |
| GET | /outputs/:id/logs | server/api/v1.js:305 | | keep |
| GET | /outputs/:id/logs | server/api/v1.js:305 | | keep |
-| GET | /play/:file | server/app.js:92 | | keep |
-| GET | /robots.txt | server/app.js:110 | | keep |
+| GET | /play/:file | server/app.js:120 | | keep |
+| GET | /robots.txt | server/app.js:138 | | keep |
| GET | /sessions | server/api/v1.js:262 | | keep |
| GET | /sessions | server/api/v1.js:262 | | keep |
| GET | /sessions | server/ui/routes.js:295 | | keep |
| GET | /sessions | server/ui/routes.js:295 | | keep |
| GET | /sessions/:id | server/api/v1.js:283 | | keep |
| GET | /sessions/:id | server/api/v1.js:283 | | keep |
@@ -133,8 +133,8 @@ Deliverable 3 (dependency half). A call site is a source file that makes HTTP re
@@ -133,8 +133,8 @@ Deliverable 3 (dependency half). A call site is a source file that makes HTTP re
| Media/server/auth.js:473 | webhook | webhook_url (per-app, configured in DB) | service-token | yes | yes |
| Media/server/auth.js:473 | webhook | webhook_url (per-app, configured in DB) | service-token | yes | yes |
| Media/server/webhooks.js:4 | webhook | webhook_url (per-app, configured in DB) | hmac | yes | yes |
| Media/server/webhooks.js:4 | webhook | webhook_url (per-app, configured in DB) | hmac | yes | yes |
| Network/server/frame/service.js:32 | OpenVibe.AI | aiUrl, OV_AI_INTERNAL_URL, :4700 | internal-key, bearer, service-token | yes | no |
| Network/server/frame/service.js:32 | OpenVibe.AI | aiUrl, OV_AI_INTERNAL_URL, :4700 | internal-key, bearer, service-token | yes | no |
-| Network/server/index.js:498 | OpenVibe.Blog | OV_BLOG_INTERNAL_URL, blogUrl, :4810 | internal-key, bearer | **no** | no |
-| Network/server/index.js:557 | OpenVibe.Events | eventsUrl, eventsInternalUrl | internal-key, bearer | **no** | no |
+| Network/server/index.js:500 | OpenVibe.Blog | OV_BLOG_INTERNAL_URL, blogUrl, :4810 | internal-key, bearer | **no** | no |
+| Network/server/index.js:559 | OpenVibe.Events | eventsUrl, eventsInternalUrl | internal-key, bearer | **no** | no |
| Network/server/admin/analytics-routes.js:24 | OpenVibe.Games | :8000 | internal-key, bearer | yes | no |
| Network/server/admin/analytics-routes.js:24 | OpenVibe.Games | :8000 | internal-key, bearer | yes | no |
| Network/server/admin/routes.js:74 | OpenVibe.Games | games.internalUrl | internal-key | yes | no |
| Network/server/admin/routes.js:74 | OpenVibe.Games | games.internalUrl | internal-key | yes | no |
| Network/server/index.js:247 | OpenVibe.Games | :8000, games.internalUrl | internal-key, bearer | **no** | no |
| Network/server/index.js:247 | OpenVibe.Games | :8000, games.internalUrl | internal-key, bearer | **no** | no |
@@ -121,12 +121,12 @@ Owner = the repository whose process runs the job; target = the authority the wo
@@ -121,12 +121,12 @@ Owner = the repository whose process runs the job; target = the authority the wo
| OpenVibe.Network | setInterval | | 0.05 s | server/graceful.js:77 | | keep |
| OpenVibe.Network | setInterval | | 0.05 s | server/graceful.js:77 | | keep |
| OpenVibe.Network | setInterval | | ? | server/identity/grants-admin.js:201 | | keep |
| OpenVibe.Network | setInterval | | ? | server/identity/grants-admin.js:201 | | keep |
| OpenVibe.Network | setInterval | | ? | server/identity/profile-events.js:104 | | keep |
| OpenVibe.Network | setInterval | | ? | server/identity/profile-events.js:104 | | keep |
-| OpenVibe.Network | setInterval | | 60 min | server/index.js:851 | | keep |
-| OpenVibe.Network | setInterval | | 2 min | server/index.js:854 | | keep |
-| OpenVibe.Network | setInterval | | 5 min | server/index.js:868 | | keep |
-| OpenVibe.Network | setInterval | | 6 min | server/index.js:871 | | keep |
-| OpenVibe.Network | setInterval | | 1 min | server/index.js:879 | | keep |
-| OpenVibe.Network | setInterval | | ? | server/index.js:882 | | keep |
+| OpenVibe.Network | setInterval | | 60 min | server/index.js:853 | | keep |
+| OpenVibe.Network | setInterval | | 2 min | server/index.js:856 | | keep |
+| OpenVibe.Network | setInterval | | 5 min | server/index.js:870 | | keep |
+| OpenVibe.Network | setInterval | | 6 min | server/index.js:873 | | keep |
+| OpenVibe.Network | setInterval | | 1 min | server/index.js:881 | | keep |
+| OpenVibe.Network | setInterval | | ? | server/index.js:884 | | keep |
| OpenVibe.Network | setInterval | | ? | server/registry/deploy-drift.js:88 | | keep |
| OpenVibe.Network | setInterval | | ? | server/registry/deploy-drift.js:88 | | keep |
| OpenVibe.Network | setInterval | | ? | server/registry/library-tags.js:47 | | keep |
| OpenVibe.Network | setInterval | | ? | server/registry/library-tags.js:47 | | keep |
| OpenVibe.Shared | setInterval | | 15 min | account-switcher.js:624 | | keep |
| OpenVibe.Shared | setInterval | | 15 min | account-switcher.js:624 | | keep |
@@ -1164,6 +1164,7 @@ Deliverable 5. Names and locations only; no value was read. "In prod" names the
@@ -1164,6 +1164,7 @@ Deliverable 5. Names and locations only; no value was read. "In prod" names the
| OpenVibe.Shared | OV_NETWORK_LOGIN_URL | | brand.js |
| OpenVibe.Shared | OV_NETWORK_LOGIN_URL | | brand.js |
| OpenVibe.Shared | OV_NETWORK_URL | | brand.js |
| OpenVibe.Shared | OV_NETWORK_URL | | brand.js |
| OpenVibe.Shared | OV_PASTES_URL | | brand.js |
| OpenVibe.Shared | OV_PASTES_URL | | brand.js |
+| OpenVibe.Shared | OV_TEST_STRICT | | test-runner.js |
| OpenVibe.Shared | OV_TEXT_URL | | brand.js |
| OpenVibe.Shared | OV_TEXT_URL | | brand.js |
| OpenVibe.Shared | OV_TOOLS_URL | | brand.js |
| OpenVibe.Shared | OV_TOOLS_URL | | brand.js |
| OpenVibe.Shared | OV_YT_URL | | brand.js |
| OpenVibe.Shared | OV_YT_URL | | brand.js |
@@ -2,10 +2,11 @@
@@ -2,10 +2,11 @@
> Generated by `scripts/roadmap-baseline/generate.js`. Do not edit by hand; edit `data/*.json` or the extractor and regenerate.
> Generated by `scripts/roadmap-baseline/generate.js`. Do not edit by hand; edit `data/*.json` or the extractor and regenerate.
-Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.
+Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 05:20 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.
| Severity | Area | Subject | Detail |
| Severity | Area | Subject | Detail |
|---|---|---|---|
|---|---|---|---|
+| medium | deploy | network | deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb |
| low | database | /opt/openvibe.blog/data/blog.db | 401 KB, 20 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.blog/data/blog.db | 401 KB, 20 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.community/data/community.db | 258 KB, 21 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.community/data/community.db | 258 KB, 21 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.games/data/legacy-import/world-before-20260923T184930Z.db | 193 KB, 13 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.games/data/legacy-import/world-before-20260923T184930Z.db | 193 KB, 13 tables, not a database the service opens (services.json): stale file or undeclared copy |
@@ -17,11 +18,12 @@ Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared w
@@ -17,11 +18,12 @@ Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared w
| low | database | /opt/openvibe.live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db | 284.7 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db | 284.7 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.live/shared/data/hobo.db | 0 B, zero tables (dead file) |
| low | database | /opt/openvibe.live/shared/data/hobo.db | 0 B, zero tables (dead file) |
| low | database | /opt/openvibe.live/shared/data/live-before-rs-slots-20260924T0153Z.db | 279.2 MB, 151 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.live/shared/data/live-before-rs-slots-20260924T0153Z.db | 279.2 MB, 151 tables, not a database the service opens (services.json): stale file or undeclared copy |
-| low | database | /opt/openvibe.live/shared/data/live.db | 284.7 MB, 162 tables, not a database the service opens (services.json): stale file or undeclared copy |
+| low | database | /opt/openvibe.live/shared/data/live.db | 284.7 MB, 163 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.live/shared/data/openvibe.db | 0 B, zero tables (dead file) |
| low | database | /opt/openvibe.live/shared/data/openvibe.db | 0 B, zero tables (dead file) |
| low | database | /opt/openvibe.live/shared/data/rs-companion.db | 8.6 MB, 33 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.live/shared/data/rs-companion.db | 8.6 MB, 33 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.media/data/backups/owner-subject-20260923.media.db | 9.5 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.media/data/backups/owner-subject-20260923.media.db | 9.5 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db | 11.3 MB, 27 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db | 11.3 MB, 27 tables, not a database the service opens (services.json): stale file or undeclared copy |
+| low | database | /opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db | 11.7 MB, 36 tables, not a database the service opens (services.json): stale file or undeclared copy |
| low | database | /opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db | 292.4 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db | 292.4 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.network/data/backups/network-pre-follows-20260926.db | 292.1 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.network/data/backups/network-pre-follows-20260926.db | 292.1 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.network/data/network-pre-refresh-hash-2026-09-24.db | 279.1 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /opt/openvibe.network/data/network-pre-refresh-hash-2026-09-24.db | 279.1 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
@@ -52,30 +54,10 @@ Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared w
@@ -52,30 +54,10 @@ Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-28 03:31 UTC compared w
| low | database | /var/lib/openvibe-community/community.pre-c24b-20260925T185400Z.db | 2.2 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /var/lib/openvibe-community/community.pre-c24b-20260925T185400Z.db | 2.2 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /var/lib/openvibe-community/community.pre-c24c-20260925T185425Z.db | 2.2 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /var/lib/openvibe-community/community.pre-c24c-20260925T185425Z.db | 2.2 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db | 2.0 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
| low | database | /var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db | 2.0 MB copy (backup, import snapshot or rehearsal) kept beside the service data |
-| low | deploy | ai | deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | billing | deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | blog | deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | chat | deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | community | deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | coupons | deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | deals | deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | events | deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json) |
| low | deploy | games | deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json) |
| low | deploy | games | deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | host | deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md) |
-| low | deploy | live | deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json) |
-| low | deploy | media | deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | network | deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more) |
-| low | deploy | news | deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | openre | deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | reviews | deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | search | deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json) |
+| low | deploy | live | deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json) |
| low | deploy | sites | deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json) |
| low | deploy | sites | deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | sources | deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | tips | deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | tools | deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | trade | deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | vip | deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json) |
-| low | deploy | wiki | deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json) |
+| low | deploy | tools | deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more) |
| low | env | OpenRe.Stream:OPENRE_SECRETS_KEY_PREVIOUS | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |
| low | env | OpenRe.Stream:OPENRE_SECRETS_KEY_PREVIOUS | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |
| low | env | OpenVibe.Billing:CCBILL_WEBHOOK_SECRET | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |
| low | env | OpenVibe.Billing:CCBILL_WEBHOOK_SECRET | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |
| low | env | OpenVibe.Billing:NOWPAYMENTS_API_KEY | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |
| low | env | OpenVibe.Billing:NOWPAYMENTS_API_KEY | secret-named variable read by code but not set in the service env file: verify it is optional or has no hardcoded fallback |
@@ -23,10 +23,10 @@ Deliverable 8, derived from the [requirement ledger](requirement-ledger.md) (as
@@ -23,10 +23,10 @@ Deliverable 8, derived from the [requirement ledger](requirement-ledger.md) (as
| D39 | Mods | absent | **partial** | D39 partial | W12, W21 | yes | - |
| D39 | Mods | absent | **partial** | D39 partial | W12, W21 | yes | - |
| D40 | Open developer services | absent | **partial** | D40 partial | W20, W21 | yes | 40 of 112 call sites authenticate with the shared internal key |
| D40 | Open developer services | absent | **partial** | D40 partial | W20, W21 | yes | 40 of 112 call sites authenticate with the shared internal key |
| D41 | Independent runtime lifecycle | partial | **partial** | D41 partial | W7, W21 | yes | - |
| D41 | Independent runtime lifecycle | partial | **partial** | D41 partial | W7, W21 | yes | - |
-| D42 | Shared component architecture | partial | **partial** | D42 partial | W2, Track R | yes | 25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0; 31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0) |
+| D42 | Shared component architecture | partial | **partial** | D42 partial | W2, Track R | yes | 25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0; 11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0) |
| D43 | Safe active-client updates | absent | **partial** | D43 partial | Track R | yes | - |
| D43 | Safe active-client updates | absent | **partial** | D43 partial | Track R | yes | - |
| D44 | Crawlable component rendering | built | **partial** | D44 partial | Track R (preserve) | yes | - |
| D44 | Crawlable component rendering | built | **partial** | D44 partial | Track R (preserve) | yes | - |
-| D45 | Release compatibility and recovery | absent | **partial** | D45 partial | Track R, W22 | yes | 24 service(s) not running origin/main |
+| D45 | Release compatibility and recovery | absent | **partial** | D45 partial | Track R, W22 | yes | 1 service(s) behind origin/main in what runs, 4 more only in documentation and tests |
| D46 | Update observability and acceptance | absent | **partial** | D46 partial | Track R, Track O | yes | 27 of 27 scanned repos have .github/workflows |
| D46 | Update observability and acceptance | absent | **partial** | D46 partial | Track R, Track O | yes | 27 of 27 scanned repos have .github/workflows |
Families: 0 met, 21 partial, 0 not met, 1 blocked on owner (of 22). Requirements: 3 met, 36 partial, 0 not met, 7 blocked on owner (of 46); 46 verified. At Wave 0 the same 22 families were 3 built, 11 partial, 8 absent.
Families: 0 met, 21 partial, 0 not met, 1 blocked on owner (of 22). Requirements: 3 met, 36 partial, 0 not met, 7 blocked on owner (of 46); 46 verified. At Wave 0 the same 22 families were 3 built, 11 partial, 8 absent.
@@ -18,8 +18,8 @@ Deliverable 9. **Not yet reviewed by the production-host owner** (Wave 0 exit cr
@@ -18,8 +18,8 @@ Deliverable 9. **Not yet reviewed by the production-host owner** (Wave 0 exit cr
| H10 | Commit identity | medium | partial | **needed** | Every contributor | all | Per-repo git config user.email = [email protected]; every new commit follows it. Older history keeps some assistant trailers. | main history violates the rule in: Live (238 commits with assistant trailers); Network (14 commits with assistant trailers); Media (30 commits with assistant trailers); Tools (9 commits with assistant trailers) |
| H10 | Commit identity | medium | partial | **needed** | Every contributor | all | Per-repo git config user.email = [email protected]; every new commit follows it. Older history keeps some assistant trailers. | main history violates the rule in: Live (238 commits with assistant trailers); Network (14 commits with assistant trailers); Media (30 commits with assistant trailers); Tools (9 commits with assistant trailers) |
| H11 | analytics_events grows without pruning | medium | mitigated | - | OpenVibe.Shared maintainers (openvibe-shared/analytics.js) | Track O / ADR-021 - before any schema wave touching Live or Network | ADR-021: no IP, user id or city stored; raw analytics events are pruned after 30 days on a schedule in Live (nightly job), Tools (timer) and Network (openvibe-shared analytics retention.schedulePrune since 9bbd90f), rollups kept. | largest analytics stores: live/shared/data/analytics.db 525.4 MB; network/data/network.db 302.4 MB; tools/apps/audio/data/analytics.db 36.7 MB; tools/apps/text/data/analytics.db 5.9 MB |
| H11 | analytics_events grows without pruning | medium | mitigated | - | OpenVibe.Shared maintainers (openvibe-shared/analytics.js) | Track O / ADR-021 - before any schema wave touching Live or Network | ADR-021: no IP, user id or city stored; raw analytics events are pruned after 30 days on a schedule in Live (nightly job), Tools (timer) and Network (openvibe-shared analytics retention.schedulePrune since 9bbd90f), rollups kept. | largest analytics stores: live/shared/data/analytics.db 525.4 MB; network/data/network.db 302.4 MB; tools/apps/audio/data/analytics.db 36.7 MB; tools/apps/text/data/analytics.db 5.9 MB |
| H12 | No Cloudflare cache-purge step after deploys | low | blocked-on-owner | **needed** | Platform operator | W21 / Track I | Cache Rules "browser_ttl respect_origin" on every openvibe.* zone and openre.stream (2026-09-23) make the edge follow origin max-age; Search has a purge queue that stays inert until a purge-scoped token exists (CLOUDFLARE_PURGE_TOKEN). | CLOUDFLARE_PURGE_TOKEN unset in search.env |
| H12 | No Cloudflare cache-purge step after deploys | low | blocked-on-owner | **needed** | Platform operator | W21 / Track I | Cache Rules "browser_ttl respect_origin" on every openvibe.* zone and openre.stream (2026-09-23) make the edge follow origin max-age; Search has a purge queue that stays inert until a purge-scoped token exists (CLOUDFLARE_PURGE_TOKEN). | CLOUDFLARE_PURGE_TOKEN unset in search.env |
-| H13 | Production drifts from main | medium | open | - | Platform operator | W0 (checklist) / W21 (release manifests) | Deploy or record why each lagging service is held back. | ai: deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json); billing: deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json); blog: deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json); chat: deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json); community: deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json); coupons: deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json); deals: deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json); events: deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json); games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); host: deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md); live: deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); media: deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json); network: deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more); news: deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json); openre: deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json); reviews: deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json); search: deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); sources: deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json); tips: deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json); trade: deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json); vip: deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json); wiki: deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json) |
-| H14 | Dead and backup database files on the production host | low | open | **needed** | Live maintainers | W0 | Confirm no code opens them, then delete the empty files; move copies (backups, import snapshots, rehearsal databases) to /var/backups/openvibe with a retention date. | blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db |
+| H13 | Production drifts from main | medium | open | - | Platform operator | W0 (checklist) / W21 (release manifests) | Deploy or record why each lagging service is held back. | network: deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb; games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); live: deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more) |
+| H14 | Dead and backup database files on the production host | low | open | **needed** | Live maintainers | W0 | Confirm no code opens them, then delete the empty files; move copies (backups, import snapshots, rehearsal databases) to /var/backups/openvibe with a retention date. | blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, media/data/reports/h15-resize-applied-20260928.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db |
| H15 | Media objects with no good copy | medium | blocked-on-owner | **needed** | Media maintainers | W4 (repair) / W22 (DR drills) | Scheduled copy verification now runs inside Media and reports through /api/ready (object_copies); the 6 objects are marked degraded. Each needs a decision: re-upload from a surviving source, or mark it unrecoverable and tell its owner. | - |
| H15 | Media objects with no good copy | medium | blocked-on-owner | **needed** | Media maintainers | W4 (repair) / W22 (DR drills) | Scheduled copy verification now runs inside Media and reports through /api/ready (object_copies); the 6 objects are marked degraded. Each needs a decision: re-upload from a surviving source, or mark it unrecoverable and tell its owner. | - |
| H16 | Off-host backups are unreadable without the backup key, which lives only on the host | high | blocked-on-owner | **needed** | Production-host owner | W22 | Escrow the key offline (password manager or paper), record its key id (`ovhost offsite check`) next to it, and test a restore from the bucket with the escrowed copy. | openvibe-backup.timer is active/waiting |
| H16 | Off-host backups are unreadable without the backup key, which lives only on the host | high | blocked-on-owner | **needed** | Production-host owner | W22 | Escrow the key offline (password manager or paper), record its key id (`ovhost offsite check`) next to it, and test a restore from the bucket with the escrowed copy. | openvibe-backup.timer is active/waiting |
| H17 | Pre-ADR-021 analytics backups still hold IP addresses | medium | open | - | Platform operator | Track O / ADR-021 | Delete after 2026-10-07: /opt/openvibe.live/data/backups/analytics-pre-adr021-2026-09-23.db, /opt/openvibe.tools/backups/analytics-2026-09-23/, and Network data/backups/network.db.pre-adr021-20260923T1634. | - |
| H17 | Pre-ADR-021 analytics backups still hold IP addresses | medium | open | - | Platform operator | Track O / ADR-021 | Delete after 2026-10-07: /opt/openvibe.live/data/backups/analytics-pre-adr021-2026-09-23.db, /opt/openvibe.tools/backups/analytics-2026-09-23/, and Network data/backups/network.db.pre-adr021-20260923T1634. | - |
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
The audit baseline from the OpenVibe development roadmap (Wave 0; section 12 items 1-3): what exists across the estate, who owns each piece of data today and who should, what production looks like next to the repos, and which hazards constrain later waves. Every file here except `data/*.json` is generated.
The audit baseline from the OpenVibe development roadmap (Wave 0; section 12 items 1-3): what exists across the estate, who owns each piece of data today and who should, what production looks like next to the repos, and which hazards constrain later waves. Every file here except `data/*.json` is generated.
-Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14cac06`, Tools `4f4ed6e`, Community `2da3501`, Games `eb2d008`, Sites `304e8b1`, Events `19919ec`, Chat `d87c8d3`, OpenRe.Stream `c77ec2a`, Billing `f24684b`, Tips `13986b5`, VIP `95b3e19`, AI `6c8b833`, Search `e8511d8`, Sources `1670853`, Wiki `3302540`, Blog `8a7f8eb`, News `97dae43`, Reviews `c87b344`, Deals `533450f`, Coupons `b91cd79`, Trade `273bce7`, Codes `64d8feb`, Host `6d2aaaa`, Examples `92eb7c3`. Production snapshot: openvibe-oregon, 2026-09-28.
+Source commits: Live `7fd7bea`, Network `2c1dacb`, Shared `919c108`, Media `47b21bd`, Tools `9339e15`, Community `581d805`, Games `eb2d008`, Sites `304e8b1`, Events `7c575cd`, Chat `4c517a5`, OpenRe.Stream `d9f4240`, Billing `1f9df56`, Tips `3cc8c83`, VIP `63f46fa`, AI `f6fdbc9`, Search `04f9fd4`, Sources `6e1185e`, Wiki `a81573f`, Blog `9f339e3`, News `cb6d79e`, Reviews `8416fcb`, Deals `0bf25e2`, Coupons `168262d`, Trade `d515e46`, Codes `1246445`, Host `02c68f6`, Examples `058c71a`. Production snapshot: openvibe-oregon, 2026-09-28.
## Deliverables
## Deliverables
@@ -14,7 +14,7 @@ Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14ca
@@ -14,7 +14,7 @@ Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14ca
| 4 | [05-realtime-and-jobs.md](05-realtime-and-jobs.md) | WebSocket servers and paths, non-HTTP protocols, background jobs |
| 4 | [05-realtime-and-jobs.md](05-realtime-and-jobs.md) | WebSocket servers and paths, non-HTTP protocols, background jobs |
| 5 | [06-secrets.md](06-secrets.md) | auth mechanisms and secret names (no values) |
| 5 | [06-secrets.md](06-secrets.md) | auth mechanisms and secret names (no values) |
| 6 | [07-ownership.md](07-ownership.md) | current vs target data ownership |
| 6 | [07-ownership.md](07-ownership.md) | current vs target data ownership |
-| 7 | [08-discrepancies.md](08-discrepancies.md) | 377 production-vs-repo items |
+| 7 | [08-discrepancies.md](08-discrepancies.md) | 359 production-vs-repo items |
| 8 | [09-d-status.md](09-d-status.md) | D01-D46 family status, derived from the requirement ledger (families: 0 met, 21 partial, 0 not met, 1 blocked on owner) |
| 8 | [09-d-status.md](09-d-status.md) | D01-D46 family status, derived from the requirement ledger (families: 0 met, 21 partial, 0 not met, 1 blocked on owner) |
| 9 | [10-hazards.md](10-hazards.md) | 18 hazards with owners, mitigations and waves; 10 need the owner's review |
| 9 | [10-hazards.md](10-hazards.md) | 18 hazards with owners, mitigations and waves; 10 need the owner's review |
| 10 | [requirement-ledger.md](requirement-ledger.md), [requirement-ledger.json](requirement-ledger.json) | D01-D46 with acceptance artifacts (roadmap §22.4/§25): 3 met, 36 partial, 0 not met, 7 blocked on owner |
| 10 | [requirement-ledger.md](requirement-ledger.md), [requirement-ledger.json](requirement-ledger.json) | D01-D46 with acceptance artifacts (roadmap §22.4/§25): 3 met, 36 partial, 0 not met, 7 blocked on owner |
@@ -28,7 +28,7 @@ Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14ca
@@ -28,7 +28,7 @@ Source commits: Live `03f49b7`, Network `c022f86`, Shared `b5a9bd7`, Media `14ca
| pass | Every route is attributed to a repo and source line, with an owner classification | 2453 routes, 0 unclassified; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix) |
| pass | Every route is attributed to a repo and source line, with an owner classification | 2453 routes, 0 unclassified; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix) |
| pass | Every background job is listed with its location and an owner classification | 179 timers/jobs, 0 unclassified |
| pass | Every background job is listed with its location and an owner classification | 179 timers/jobs, 0 unclassified |
| pass | Every cross-service call records caller, callee, auth, timeout and retry | 112 call sites; 39 with no timeout detected |
| pass | Every cross-service call records caller, callee, auth, timeout and retry | 112 call sites; 39 with no timeout detected |
-| pass | Unknowns are marked unknown, not guessed | 2 unknown items recorded |
+| pass | Unknowns are marked unknown, not guessed | 2 unknown items recorded; 0 things this run could not observe, each marked unknown |
| pass | Every D01-D46 requirement has a status and verified acceptance artifacts (requirement ledger) | 46/46 requirements verified |
| pass | Every D01-D46 requirement has a status and verified acceptance artifacts (requirement ledger) | 46/46 requirements verified |
| **open** | Hazard register reviewed by the production-host owner | pending: set reviewedBy in data/hazards.json after review |
| **open** | Hazard register reviewed by the production-host owner | pending: set reviewedBy in data/hazards.json after review |
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"owner": "OpenVibers",
"owner": "OpenVibers",
- "collectedAt": "2026-09-28T03:32:40.497Z",
+ "collectedAt": "2026-09-28T05:20:29.699Z",
"repos": [
"repos": [
{
{
"description": "AlexFrison.net",
"description": "AlexFrison.net",
@@ -24,10 +24,10 @@
@@ -24,10 +24,10 @@
},
},
{
{
"description": "Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health.",
"description": "Ingest and restream: stream definitions, keys, sessions, transport workers, outputs and output health.",
- "diskUsage": 433,
+ "diskUsage": 541,
"isArchived": false,
"isArchived": false,
"name": "OpenRe.Stream",
"name": "OpenRe.Stream",
- "pushedAt": "2026-09-28T03:20:27Z",
+ "pushedAt": "2026-09-28T04:16:48Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -40,7 +40,7 @@
@@ -40,7 +40,7 @@
"port": 4500,
"port": 4500,
"rtmpPort": 1936,
"rtmpPort": 1936,
"domain": "openre.stream",
"domain": "openre.stream",
- "contracts": "openvibe-contracts v0.49.0 (openvibe-sdk v0.12.0, openvibe-shared v1.22.0)",
+ "contracts": "openvibe-contracts v0.49.0 (openvibe-sdk v0.12.0, openvibe-shared v1.25.0)",
"protocols": {
"protocols": {
"rtmp": "ingest ported (openre-rtmp-ingest)",
"rtmp": "ingest ported (openre-rtmp-ingest)",
"restream": "RTMP source to RTMP/RTMPS/SRT destinations ported (openre-restream-worker)",
"restream": "RTMP source to RTMP/RTMPS/SRT destinations ported (openre-restream-worker)",
@@ -79,10 +79,10 @@
@@ -79,10 +79,10 @@
},
},
{
{
"description": "Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product.",
"description": "Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product.",
- "diskUsage": 1033,
+ "diskUsage": 1037,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.AI",
"name": "OpenVibe.AI",
- "pushedAt": "2026-09-28T03:20:29Z",
+ "pushedAt": "2026-09-28T04:20:29Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -134,10 +134,10 @@
@@ -134,10 +134,10 @@
},
},
{
{
"description": "The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts.",
"description": "The isolated money ledger: providers, receipts, subscriptions, entitlements, refunds and payouts.",
- "diskUsage": 597,
+ "diskUsage": 680,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Billing",
"name": "OpenVibe.Billing",
- "pushedAt": "2026-09-28T03:20:31Z",
+ "pushedAt": "2026-09-28T04:18:44Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -171,10 +171,10 @@
@@ -171,10 +171,10 @@
},
},
{
{
"description": "The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds.",
"description": "The official OpenVibe blog and a blog for every member: drafts, revisions, series, scheduling, feeds.",
- "diskUsage": 722,
+ "diskUsage": 756,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Blog",
"name": "OpenVibe.Blog",
- "pushedAt": "2026-09-28T03:20:33Z",
+ "pushedAt": "2026-09-28T04:20:33Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -190,7 +190,7 @@
@@ -190,7 +190,7 @@
"packages": [
"packages": [
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
"openvibe-contracts v0.53.0",
"openvibe-contracts v0.53.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -236,10 +236,10 @@
@@ -236,10 +236,10 @@
},
},
{
{
"description": "Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation.",
"description": "Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation.",
- "diskUsage": 977,
+ "diskUsage": 981,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Chat",
"name": "OpenVibe.Chat",
- "pushedAt": "2026-09-28T03:20:35Z",
+ "pushedAt": "2026-09-28T04:25:02Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -305,10 +305,10 @@
@@ -305,10 +305,10 @@
},
},
{
{
"description": "The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance.",
"description": "The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance.",
- "diskUsage": 814,
+ "diskUsage": 872,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Codes",
"name": "OpenVibe.Codes",
- "pushedAt": "2026-09-28T03:29:24Z",
+ "pushedAt": "2026-09-28T04:20:31Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -324,7 +324,7 @@
@@ -324,7 +324,7 @@
"packages": [
"packages": [
"openvibe-contracts v0.53.0",
"openvibe-contracts v0.53.0",
"openvibe-sdk v0.13.0",
"openvibe-sdk v0.13.0",
- "openvibe-shared v1.22.0"
+ "openvibe-shared v1.25.0"
],
],
"summary": "Deployed and public since 2026-09-23: https://openvibe.codes is served by this portal (deployed with `sudo ovhost deploy codes`, unit openvibe-codes on 127.0.0.1:4900 behind nginx), and the domain left OpenVibe.Sites. Sign-in uses the registered Network OAuth client `codes` (PKCE S256); the principal `codes` holds events.event.publish and the Events relay is configured. On 2026-09-23 production held 0 manifests, 0 releases and 0 playground runs. The external-developer path (account, project, sandbox app, grants, Media upload, app events) was run once on production on 2026-09-23 with public endpoints and curl, not through these playgrounds; that check is not committed to a repository or CI.",
"summary": "Deployed and public since 2026-09-23: https://openvibe.codes is served by this portal (deployed with `sudo ovhost deploy codes`, unit openvibe-codes on 127.0.0.1:4900 behind nginx), and the domain left OpenVibe.Sites. Sign-in uses the registered Network OAuth client `codes` (PKCE S256); the principal `codes` holds events.event.publish and the Events relay is configured. On 2026-09-23 production held 0 manifests, 0 releases and 0 playground runs. The external-developer path (account, project, sandbox app, grants, Media upload, app events) was run once on production on 2026-09-23 with public endpoints and curl, not through these playgrounds; that check is not committed to a repository or CI.",
"works": [
"works": [
@@ -375,10 +375,10 @@
@@ -375,10 +375,10 @@
},
},
{
{
"description": "",
"description": "",
- "diskUsage": 1778,
+ "diskUsage": 1888,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Community",
"name": "OpenVibe.Community",
- "pushedAt": "2026-09-28T03:20:39Z",
+ "pushedAt": "2026-09-28T04:17:39Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -428,10 +428,10 @@
@@ -428,10 +428,10 @@
},
},
{
{
"description": "Machine-readable contracts for the whole OpenVibe network.",
"description": "Machine-readable contracts for the whole OpenVibe network.",
- "diskUsage": 3315,
+ "diskUsage": 3357,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Contracts",
"name": "OpenVibe.Contracts",
- "pushedAt": "2026-09-28T03:22:17Z",
+ "pushedAt": "2026-09-28T04:18:50Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -462,10 +462,10 @@
@@ -462,10 +462,10 @@
},
},
{
{
"description": "Coupon codes with merchant matching, restrictions, expiry and real-people validity reports.",
"description": "Coupon codes with merchant matching, restrictions, expiry and real-people validity reports.",
- "diskUsage": 462,
+ "diskUsage": 496,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Coupons",
"name": "OpenVibe.Coupons",
- "pushedAt": "2026-09-28T03:20:43Z",
+ "pushedAt": "2026-09-28T04:18:46Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -481,7 +481,7 @@
@@ -481,7 +481,7 @@
"packages": [
"packages": [
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
"openvibe-contracts v0.53.0",
"openvibe-contracts v0.53.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -520,10 +520,10 @@
@@ -520,10 +520,10 @@
},
},
{
{
"description": "Deals submitted and voted on by the community, with source, price and freshness always shown.",
"description": "Deals submitted and voted on by the community, with source, price and freshness always shown.",
- "diskUsage": 493,
+ "diskUsage": 527,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Deals",
"name": "OpenVibe.Deals",
- "pushedAt": "2026-09-28T03:20:45Z",
+ "pushedAt": "2026-09-28T04:20:35Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -539,7 +539,7 @@
@@ -539,7 +539,7 @@
"packages": [
"packages": [
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
"openvibe-contracts v0.53.0",
"openvibe-contracts v0.53.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -583,10 +583,10 @@
@@ -583,10 +583,10 @@
},
},
{
{
"description": "Durable events, subscriptions, delivery, retry, dead letters and replay for the network.",
"description": "Durable events, subscriptions, delivery, retry, dead letters and replay for the network.",
- "diskUsage": 550,
+ "diskUsage": 627,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Events",
"name": "OpenVibe.Events",
- "pushedAt": "2026-09-28T03:20:47Z",
+ "pushedAt": "2026-09-28T04:12:07Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -627,10 +627,10 @@
@@ -627,10 +627,10 @@
},
},
{
{
"description": "Executable public integration examples, tested in CI against the platform.",
"description": "Executable public integration examples, tested in CI against the platform.",
- "diskUsage": 320,
+ "diskUsage": 329,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Examples",
"name": "OpenVibe.Examples",
- "pushedAt": "2026-09-28T03:20:49Z",
+ "pushedAt": "2026-09-28T04:21:34Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -667,10 +667,10 @@
@@ -667,10 +667,10 @@
},
},
{
{
"description": "First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023).",
"description": "First-party client surfaces for the network: the browser helper built on Coupons' public API with scoped, revocable credentials; later the kiosk/hardware companions and any desktop client (ADR-023).",
- "diskUsage": 58,
+ "diskUsage": 61,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Extensions",
"name": "OpenVibe.Extensions",
- "pushedAt": "2026-09-25T21:11:21Z",
+ "pushedAt": "2026-09-28T04:18:48Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -709,7 +709,7 @@
@@ -709,7 +709,7 @@
"store listings (Chrome Web Store, addons.mozilla.org) and the store extension ids in COUPONS_EXTENSION_ORIGINS"
"store listings (Chrome Web Store, addons.mozilla.org) and the store extension ids in COUPONS_EXTENSION_ORIGINS"
],
],
"deployed": false,
"deployed": false,
- "updated": "2026-09-23"
+ "updated": "2026-09-28"
}
}
},
},
{
{
@@ -754,10 +754,10 @@
@@ -754,10 +754,10 @@
},
},
{
{
"description": "The network's deployment/control plane first; then isolated hosting for community sites, bots and mods.",
"description": "The network's deployment/control plane first; then isolated hosting for community sites, bots and mods.",
- "diskUsage": 1384,
+ "diskUsage": 1479,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Host",
"name": "OpenVibe.Host",
- "pushedAt": "2026-09-28T03:22:19Z",
+ "pushedAt": "2026-09-28T05:19:55Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -774,7 +774,7 @@
@@ -774,7 +774,7 @@
"packages": [
"packages": [
"openvibe-contracts v0.66.0 (host.* capabilities and manifest released in v0.24.0; v0.32.0 adds the takedown routes to host.site.manage)",
"openvibe-contracts v0.66.0 (host.* capabilities and manifest released in v0.24.0; v0.32.0 adds the takedown routes to host.site.manage)",
"openvibe-sdk v0.12.0",
"openvibe-sdk v0.12.0",
- "openvibe-shared v1.22.0"
+ "openvibe-shared v1.25.0"
],
],
"capabilities": [
"capabilities": [
"host.site.manage",
"host.site.manage",
@@ -821,10 +821,10 @@
@@ -821,10 +821,10 @@
},
},
{
{
"description": "",
"description": "",
- "diskUsage": 9109,
+ "diskUsage": 8547,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Live",
"name": "OpenVibe.Live",
- "pushedAt": "2026-09-28T03:25:00Z",
+ "pushedAt": "2026-09-28T04:07:18Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -865,10 +865,10 @@
@@ -865,10 +865,10 @@
},
},
{
{
"description": "",
"description": "",
- "diskUsage": 2022,
+ "diskUsage": 2183,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Media",
"name": "OpenVibe.Media",
- "pushedAt": "2026-09-28T03:20:55Z",
+ "pushedAt": "2026-09-28T05:17:13Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -913,10 +913,10 @@
@@ -913,10 +913,10 @@
},
},
{
{
"description": "",
"description": "",
- "diskUsage": 3471,
+ "diskUsage": 3661,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Network",
"name": "OpenVibe.Network",
- "pushedAt": "2026-09-28T03:27:59Z",
+ "pushedAt": "2026-09-28T04:10:06Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -970,10 +970,10 @@
@@ -970,10 +970,10 @@
},
},
{
{
"description": "Source-backed stories: clustered coverage, cited summaries, perspectives and timelines.",
"description": "Source-backed stories: clustered coverage, cited summaries, perspectives and timelines.",
- "diskUsage": 466,
+ "diskUsage": 575,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.News",
"name": "OpenVibe.News",
- "pushedAt": "2026-09-28T03:20:58Z",
+ "pushedAt": "2026-09-28T04:21:13Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -989,7 +989,7 @@
@@ -989,7 +989,7 @@
"packages": [
"packages": [
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
"openvibe-contracts v0.49.0",
"openvibe-contracts v0.49.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -1033,10 +1033,10 @@
@@ -1033,10 +1033,10 @@
},
},
{
{
"description": "Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority.",
"description": "Shared publishing packages (drafts, revisions, citations, SEO gate, feeds, structured data) for Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Packages only, no authority.",
- "diskUsage": 248,
+ "diskUsage": 271,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Publishing",
"name": "OpenVibe.Publishing",
- "pushedAt": "2026-09-28T03:21:00Z",
+ "pushedAt": "2026-09-28T04:20:38Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1116,10 +1116,10 @@
@@ -1116,10 +1116,10 @@
},
},
{
{
"description": "Review signals gathered across sources with provenance, entity resolution and honest aggregates.",
"description": "Review signals gathered across sources with provenance, entity resolution and honest aggregates.",
- "diskUsage": 501,
+ "diskUsage": 591,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Reviews",
"name": "OpenVibe.Reviews",
- "pushedAt": "2026-09-28T03:21:02Z",
+ "pushedAt": "2026-09-28T04:17:11Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1134,7 +1134,7 @@
@@ -1134,7 +1134,7 @@
"contracts": "openvibe-contracts v0.49.0",
"contracts": "openvibe-contracts v0.49.0",
"packages": [
"packages": [
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -1172,10 +1172,10 @@
@@ -1172,10 +1172,10 @@
},
},
{
{
"description": "Supported browser and server clients for the OpenVibe platform.",
"description": "Supported browser and server clients for the OpenVibe platform.",
- "diskUsage": 706,
+ "diskUsage": 733,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.SDK",
"name": "OpenVibe.SDK",
- "pushedAt": "2026-09-28T03:23:32Z",
+ "pushedAt": "2026-09-28T04:21:17Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1206,10 +1206,10 @@
@@ -1206,10 +1206,10 @@
},
},
{
{
"description": "Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation.",
"description": "Permission-aware, event-fed search index for the network: canonical index documents, ACL-filtered queries, deletion propagation.",
- "diskUsage": 318,
+ "diskUsage": 340,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Search",
"name": "OpenVibe.Search",
- "pushedAt": "2026-09-28T03:21:06Z",
+ "pushedAt": "2026-09-28T04:16:52Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1253,10 +1253,10 @@
@@ -1253,10 +1253,10 @@
},
},
{
{
"description": "Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders.",
"description": "Versioned UI, chrome, SEO, legal and release-client packages every OpenVibe site renders.",
- "diskUsage": 1084,
+ "diskUsage": 1260,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Shared",
"name": "OpenVibe.Shared",
- "pushedAt": "2026-09-28T03:21:08Z",
+ "pushedAt": "2026-09-28T04:04:32Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1265,7 +1265,7 @@
@@ -1265,7 +1265,7 @@
"code": true,
"code": true,
"wave": "W2",
"wave": "W2",
"package": "openvibe-shared",
"package": "openvibe-shared",
- "version": "1.23.1",
+ "version": "1.25.0",
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
"deployed": false,
"deployed": false,
"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",
"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",
@@ -1284,7 +1284,7 @@
@@ -1284,7 +1284,7 @@
},
},
{
{
"description": "Static front pages for OpenVibe domains that are not full apps yet",
"description": "Static front pages for OpenVibe domains that are not full apps yet",
- "diskUsage": 967,
+ "diskUsage": 970,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Sites",
"name": "OpenVibe.Sites",
"pushedAt": "2026-09-28T03:21:10Z",
"pushedAt": "2026-09-28T03:21:10Z",
@@ -1329,10 +1329,10 @@
@@ -1329,10 +1329,10 @@
},
},
{
{
"description": "Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states.",
"description": "Source registry and ingestion workers for the network: provenance, terms, rate limits, explicit failure states.",
- "diskUsage": 309,
+ "diskUsage": 369,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Sources",
"name": "OpenVibe.Sources",
- "pushedAt": "2026-09-28T03:21:12Z",
+ "pushedAt": "2026-09-28T04:17:09Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1384,10 +1384,10 @@
@@ -1384,10 +1384,10 @@
},
},
{
{
"description": "Creator support: tips, goals, paid messages, TTS and media requests, overlays.",
"description": "Creator support: tips, goals, paid messages, TTS and media requests, overlays.",
- "diskUsage": 563,
+ "diskUsage": 583,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Tips",
"name": "OpenVibe.Tips",
- "pushedAt": "2026-09-28T03:21:14Z",
+ "pushedAt": "2026-09-28T04:21:11Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1421,10 +1421,10 @@
@@ -1421,10 +1421,10 @@
},
},
{
{
"description": "",
"description": "",
- "diskUsage": 2632,
+ "diskUsage": 2703,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Tools",
"name": "OpenVibe.Tools",
- "pushedAt": "2026-09-28T03:21:16Z",
+ "pushedAt": "2026-09-28T04:22:25Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1473,10 +1473,10 @@
@@ -1473,10 +1473,10 @@
},
},
{
{
"description": "Informational watchlists, sourced market context and alerts. No custody, no order execution.",
"description": "Informational watchlists, sourced market context and alerts. No custody, no order execution.",
- "diskUsage": 418,
+ "diskUsage": 449,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Trade",
"name": "OpenVibe.Trade",
- "pushedAt": "2026-09-28T03:21:18Z",
+ "pushedAt": "2026-09-28T04:21:15Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1493,7 +1493,7 @@
@@ -1493,7 +1493,7 @@
"packages": [
"packages": [
"openvibe-contracts v0.49.0",
"openvibe-contracts v0.49.0",
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -1536,10 +1536,10 @@
@@ -1536,10 +1536,10 @@
},
},
{
{
"description": "Memberships: plans, perks and benefits recognised across every OpenVibe site.",
"description": "Memberships: plans, perks and benefits recognised across every OpenVibe site.",
- "diskUsage": 510,
+ "diskUsage": 525,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.VIP",
"name": "OpenVibe.VIP",
- "pushedAt": "2026-09-28T03:21:20Z",
+ "pushedAt": "2026-09-28T04:20:39Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1590,10 +1590,10 @@
@@ -1590,10 +1590,10 @@
},
},
{
{
"description": "Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed.",
"description": "Wiki spaces with page trees, revisions, citations, media and discussion — editable together, source-backed.",
- "diskUsage": 754,
+ "diskUsage": 787,
"isArchived": false,
"isArchived": false,
"name": "OpenVibe.Wiki",
"name": "OpenVibe.Wiki",
- "pushedAt": "2026-09-28T03:21:22Z",
+ "pushedAt": "2026-09-28T04:17:41Z",
"visibility": "PUBLIC",
"visibility": "PUBLIC",
"defaultBranch": "main",
"defaultBranch": "main",
"status": {
"status": {
@@ -1608,7 +1608,7 @@
@@ -1608,7 +1608,7 @@
"contracts": "openvibe-contracts v0.64.0",
"contracts": "openvibe-contracts v0.64.0",
"packages": [
"packages": [
"openvibe-publishing v0.4.0",
"openvibe-publishing v0.4.0",
- "openvibe-shared v1.22.0",
+ "openvibe-shared v1.25.0",
"openvibe-sdk v0.12.0"
"openvibe-sdk v0.12.0"
],
],
"capabilities": [
"capabilities": [
@@ -1,51 +1,51 @@
@@ -1,51 +1,51 @@
{
{
"host": "openvibe-oregon",
"host": "openvibe-oregon",
- "collectedAt": "2026-09-28T03:31:00.238Z",
+ "collectedAt": "2026-09-28T05:20:11.716Z",
"deployments": {
"deployments": {
"ai": {
"ai": {
"path": "/opt/openvibe.ai",
"path": "/opt/openvibe.ai",
- "sha": "549bed09452233c6b21d529ab905a7bd8fbad4da",
- "committedAt": "2026-09-27T19:43:37-07:00"
+ "sha": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",
+ "committedAt": "2026-09-27T21:20:27-07:00"
},
},
"billing": {
"billing": {
"path": "/opt/openvibe.billing",
"path": "/opt/openvibe.billing",
- "sha": "80f97aabbecb0fcb81842480166533ff0452c8a5",
- "committedAt": "2026-09-27T19:45:09-07:00"
+ "sha": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",
+ "committedAt": "2026-09-27T21:18:42-07:00"
},
},
"blog": {
"blog": {
"path": "/opt/openvibe.blog",
"path": "/opt/openvibe.blog",
- "sha": "21d537c6e6b90712512916e4d7377d581ee2f646",
- "committedAt": "2026-09-27T18:49:25-07:00"
+ "sha": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",
+ "committedAt": "2026-09-27T21:20:31-07:00"
},
},
"chat": {
"chat": {
"path": "/opt/openvibe.chat",
"path": "/opt/openvibe.chat",
- "sha": "3aab730c5105594523ed58ab0643c6eedc6b5214",
- "committedAt": "2026-09-27T19:10:37-07:00"
+ "sha": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",
+ "committedAt": "2026-09-27T21:25:00-07:00"
},
},
"codes": {
"codes": {
"path": "/opt/openvibe.codes",
"path": "/opt/openvibe.codes",
- "sha": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",
- "committedAt": "2026-09-27T20:27:52-07:00"
+ "sha": "1246445c4abaddcacf4d04adf172d601700833e3",
+ "committedAt": "2026-09-27T21:20:29-07:00"
},
},
"community": {
"community": {
"path": "/opt/openvibe.community",
"path": "/opt/openvibe.community",
- "sha": "52d923a941f659ccfc7cb442efb2b10349663175",
- "committedAt": "2026-09-27T18:07:00-07:00"
+ "sha": "581d80535f4bd1081afeb7a564392d4e1e5eb000",
+ "committedAt": "2026-09-27T21:17:37-07:00"
},
},
"coupons": {
"coupons": {
"path": "/opt/openvibe.coupons",
"path": "/opt/openvibe.coupons",
- "sha": "64835d2a1c926e89116a35218d7a2d081f38b67a",
- "committedAt": "2026-09-27T19:02:19-07:00"
+ "sha": "168262d1baa81ab1973863d66d52ab213711ef81",
+ "committedAt": "2026-09-27T21:18:44-07:00"
},
},
"deals": {
"deals": {
"path": "/opt/openvibe.deals",
"path": "/opt/openvibe.deals",
- "sha": "fa0582d267ef61e7b141299008d6239dd34f49ce",
- "committedAt": "2026-09-27T18:58:50-07:00"
+ "sha": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",
+ "committedAt": "2026-09-27T21:20:34-07:00"
},
},
"events": {
"events": {
"path": "/opt/openvibe.events",
"path": "/opt/openvibe.events",
- "sha": "f55f7eb601be58220089c197f7dd2178b46d8d15",
- "committedAt": "2026-09-27T19:55:58-07:00"
+ "sha": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",
+ "committedAt": "2026-09-27T21:12:06-07:00"
},
},
"games": {
"games": {
"path": "/opt/openvibe.games",
"path": "/opt/openvibe.games",
@@ -54,40 +54,40 @@
@@ -54,40 +54,40 @@
},
},
"host": {
"host": {
"path": "/opt/openvibe.host",
"path": "/opt/openvibe.host",
- "sha": "2b633899f41b559586e3d6c234925d498c7bf2cd",
- "committedAt": "2026-09-27T19:35:46-07:00"
+ "sha": "02c68f694a28f06e3056a05055f4515b3d4e7c64",
+ "committedAt": "2026-09-27T22:19:53-07:00"
},
},
"live": {
"live": {
"path": "/opt/openvibe.live",
"path": "/opt/openvibe.live",
"layout": "release",
"layout": "release",
- "release": "20260928-032420-b0cc2ef4",
- "sha": "b0cc2ef4f8a57c9624b88af64a6aa4bd1e425279",
- "committedAt": "2026-09-27T19:58:34-07:00"
+ "release": "20260928-040645-278cd404",
+ "sha": "278cd4047e57f4a4849b2adde497894a4f985445",
+ "committedAt": "2026-09-27T21:06:08-07:00"
},
},
"media": {
"media": {
"path": "/opt/openvibe.media",
"path": "/opt/openvibe.media",
- "sha": "62483631db9b9c120662abf2b21d4cff0a2bdc80",
- "committedAt": "2026-09-27T19:50:40-07:00"
+ "sha": "47b21bde0b4863344fafbb90109922fbf8757687",
+ "committedAt": "2026-09-27T22:17:11-07:00"
},
},
"network": {
"network": {
"path": "/opt/openvibe.network",
"path": "/opt/openvibe.network",
- "sha": "ddd87b6844fad1f0f878ed574ce0e2c990e5e695",
- "committedAt": "2026-09-27T19:26:13-07:00"
+ "sha": "ac71bb4d82b09a1fe384119a22d92bd3eb98abbf",
+ "committedAt": "2026-09-27T20:53:11-07:00"
},
},
"news": {
"news": {
"path": "/opt/openvibe.news",
"path": "/opt/openvibe.news",
- "sha": "8ab47a6a78168e1b25ac07c01aeb3a0bb743bbb9",
- "committedAt": "2026-09-27T19:20:19-07:00"
+ "sha": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",
+ "committedAt": "2026-09-27T21:21:11-07:00"
},
},
"reviews": {
"reviews": {
"path": "/opt/openvibe.reviews",
"path": "/opt/openvibe.reviews",
- "sha": "1cff36b8b9d385c4effb323f0506ede106b18d22",
- "committedAt": "2026-09-27T19:23:25-07:00"
+ "sha": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",
+ "committedAt": "2026-09-27T21:17:09-07:00"
},
},
"search": {
"search": {
"path": "/opt/openvibe.search",
"path": "/opt/openvibe.search",
- "sha": "8ed7667ff1e383271ddcc67c709be1bf5e1ba43d",
- "committedAt": "2026-09-27T17:59:00-07:00"
+ "sha": "04f9fd45c3c10b401704da2994700c14290b5051",
+ "committedAt": "2026-09-27T21:16:50-07:00"
},
},
"sites": {
"sites": {
"path": "/opt/openvibe.sites",
"path": "/opt/openvibe.sites",
@@ -96,13 +96,13 @@
@@ -96,13 +96,13 @@
},
},
"sources": {
"sources": {
"path": "/opt/openvibe.sources",
"path": "/opt/openvibe.sources",
- "sha": "351383e8111395668a16f66b11d659549c6483fb",
- "committedAt": "2026-09-27T19:29:11-07:00"
+ "sha": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",
+ "committedAt": "2026-09-27T21:17:07-07:00"
},
},
"tips": {
"tips": {
"path": "/opt/openvibe.tips",
"path": "/opt/openvibe.tips",
- "sha": "1e6bfbb8294c9401c46c066457b165c24bc90d02",
- "committedAt": "2026-09-27T18:11:05-07:00"
+ "sha": "3cc8c8354183008026e38a99db9ef96014663467",
+ "committedAt": "2026-09-27T21:21:09-07:00"
},
},
"tools": {
"tools": {
"path": "/opt/openvibe.tools",
"path": "/opt/openvibe.tools",
@@ -111,25 +111,25 @@
@@ -111,25 +111,25 @@
},
},
"trade": {
"trade": {
"path": "/opt/openvibe.trade",
"path": "/opt/openvibe.trade",
- "sha": "4658447782c7d259e59d8c1060fd05c60cf66574",
- "committedAt": "2026-09-27T19:26:12-07:00"
+ "sha": "d515e46f7f32a6265a8e7feab49e97b9811094ed",
+ "committedAt": "2026-09-27T21:21:13-07:00"
},
},
"vip": {
"vip": {
"path": "/opt/openvibe.vip",
"path": "/opt/openvibe.vip",
- "sha": "0fbcbb53802d2bd4e4dc6e393465a1fce1fc75a9",
- "committedAt": "2026-09-27T18:14:01-07:00"
+ "sha": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",
+ "committedAt": "2026-09-27T21:20:38-07:00"
},
},
"wiki": {
"wiki": {
"path": "/opt/openvibe.wiki",
"path": "/opt/openvibe.wiki",
- "sha": "32a26ef43c5f4ac2c02c813f0ba68fda5f8cd5cf",
- "committedAt": "2026-09-27T18:44:27-07:00"
+ "sha": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",
+ "committedAt": "2026-09-27T21:17:39-07:00"
},
},
"openre": {
"openre": {
"path": "/opt/openre.stream",
"path": "/opt/openre.stream",
"layout": "release",
"layout": "release",
- "release": "cf423e377878",
- "sha": "cf423e377878eb60e449205a670130e6febb6b07",
- "committedAt": "2026-09-27T19:32:33-07:00"
+ "release": "d9f42407f666",
+ "sha": "d9f42407f66648c547c32989ecf862b0bc949b63",
+ "committedAt": "2026-09-27T21:16:46-07:00"
}
}
},
},
"units": [
"units": [
@@ -488,7 +488,7 @@
@@ -488,7 +488,7 @@
},
},
{
{
"file": "/opt/openvibe.games/data/world.db",
"file": "/opt/openvibe.games/data/world.db",
- "bytes": 610304,
+ "bytes": 634880,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"account_data_events",
"account_data_events",
@@ -1357,7 +1357,7 @@
@@ -1357,7 +1357,7 @@
},
},
{
{
"file": "/opt/openvibe.live/shared/data/live.db",
"file": "/opt/openvibe.live/shared/data/live.db",
- "bytes": 284700672,
+ "bytes": 284712960,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"account_data_events",
"account_data_events",
@@ -1444,6 +1444,7 @@
@@ -1444,6 +1444,7 @@
"easter_egg_solves",
"easter_egg_solves",
"emotes",
"emotes",
"event_outbox",
"event_outbox",
+ "follow_projection_revisions",
"follows",
"follows",
"game_achievements",
"game_achievements",
"game_bank",
"game_bank",
@@ -1677,6 +1678,49 @@
@@ -1677,6 +1678,49 @@
"vods"
"vods"
]
]
},
},
+ {
+ "file": "/opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db",
+ "bytes": 11735040,
+ "owner": "ubuntu",
+ "tables": [
+ "account_data_events",
+ "apps",
+ "assets",
+ "clips",
+ "config_keys",
+ "config_snapshots",
+ "content_views",
+ "content_visits",
+ "event_outbox",
+ "files",
+ "media_holds",
+ "media_invariant_violations",
+ "media_jobs",
+ "media_locations",
+ "media_namespaces",
+ "media_object_changes",
+ "media_object_tier_decisions",
+ "media_object_view_salts",
+ "media_object_viewer_days",
+ "media_object_views_daily",
+ "media_objects",
+ "media_quota_reservations",
+ "media_relationships",
+ "media_settings",
+ "media_tier_decisions",
+ "media_upload_parts",
+ "media_uploads",
+ "media_variants",
+ "media_verifications",
+ "media_verify_runs",
+ "paste_comments",
+ "paste_likes",
+ "pastes",
+ "search_doc_pushes",
+ "token_revocations",
+ "vods"
+ ]
+ },
{
{
"file": "/opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db",
"file": "/opt/openvibe.network/data/backups/network-pre-creator-analytics-20260926.db",
"bytes": 292413440,
"bytes": 292413440,
@@ -2371,7 +2415,7 @@
@@ -2371,7 +2415,7 @@
},
},
{
{
"file": "/var/lib/openvibe-ai/ai.db",
"file": "/var/lib/openvibe-ai/ai.db",
- "bytes": 115773440,
+ "bytes": 118628352,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"ai_module_pushes",
"ai_module_pushes",
@@ -2398,7 +2442,7 @@
@@ -2398,7 +2442,7 @@
},
},
{
{
"file": "/var/lib/openvibe-billing/billing.db",
"file": "/var/lib/openvibe-billing/billing.db",
- "bytes": 831488,
+ "bytes": 839680,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"account_balances",
"account_balances",
@@ -2577,7 +2621,7 @@
@@ -2577,7 +2621,7 @@
},
},
{
{
"file": "/var/lib/openvibe-blog/blog.db",
"file": "/var/lib/openvibe-blog/blog.db",
- "bytes": 1863680,
+ "bytes": 1892352,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"blog_feed_settings",
"blog_feed_settings",
@@ -2608,7 +2652,7 @@
@@ -2608,7 +2652,7 @@
},
},
{
{
"file": "/var/lib/openvibe-chat/chat.db",
"file": "/var/lib/openvibe-chat/chat.db",
- "bytes": 25325568,
+ "bytes": 25337856,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"account_data_events",
"account_data_events",
@@ -3171,7 +3215,7 @@
@@ -3171,7 +3215,7 @@
},
},
{
{
"file": "/var/lib/openvibe-community/community.db",
"file": "/var/lib/openvibe-community/community.db",
- "bytes": 5300224,
+ "bytes": 5464064,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"account_data_events",
"account_data_events",
@@ -3396,7 +3440,7 @@
@@ -3396,7 +3440,7 @@
},
},
{
{
"file": "/var/lib/openvibe-events/events.db",
"file": "/var/lib/openvibe-events/events.db",
- "bytes": 23531520,
+ "bytes": 23937024,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"app_revocations",
"app_revocations",
@@ -3430,7 +3474,7 @@
@@ -3430,7 +3474,7 @@
},
},
{
{
"file": "/var/lib/openvibe-news/news.db",
"file": "/var/lib/openvibe-news/news.db",
- "bytes": 507904,
+ "bytes": 512000,
"owner": "ubuntu",
"owner": "ubuntu",
"tables": [
"tables": [
"event_outbox",
"event_outbox",
@@ -1,36 +1,36 @@
@@ -1,36 +1,36 @@
{
{
"generatedFrom": {
"generatedFrom": {
- "OpenVibe.Live": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",
- "OpenVibe.Network": "c022f86236f3e8251c924fae6c98494658b795a4",
- "OpenVibe.Shared": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",
- "OpenVibe.Media": "14cac06886649848c332cfa564aa6b3594ea09bc",
- "OpenVibe.Tools": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",
- "OpenVibe.Community": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",
+ "OpenVibe.Live": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",
+ "OpenVibe.Network": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",
+ "OpenVibe.Shared": "919c10811cc3a4dc62fda32228f5d82a7aef1045",
+ "OpenVibe.Media": "47b21bde0b4863344fafbb90109922fbf8757687",
+ "OpenVibe.Tools": "9339e1500139b229e2e2f59ed7cba336dced8897",
+ "OpenVibe.Community": "581d80535f4bd1081afeb7a564392d4e1e5eb000",
"OpenVibe.Games": "eb2d00880d3231b2c68cb1753b4542044edef1e5",
"OpenVibe.Games": "eb2d00880d3231b2c68cb1753b4542044edef1e5",
"OpenVibe.Sites": "304e8b12b535f4b562f23027ae84f1a5d515cc6c",
"OpenVibe.Sites": "304e8b12b535f4b562f23027ae84f1a5d515cc6c",
- "OpenVibe.Events": "19919ece79707eed051c3f18ab37b7fdb6d939a6",
- "OpenVibe.Chat": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",
- "OpenRe.Stream": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",
- "OpenVibe.Billing": "f24684bb84ec1670bd08670891e6742fa433a548",
- "OpenVibe.Tips": "13986b59e697d12a328a4f12e993295445ca40be",
- "OpenVibe.VIP": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",
- "OpenVibe.AI": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",
- "OpenVibe.Search": "e8511d849720534a9ffcd54b052663111e5b1e6f",
- "OpenVibe.Sources": "167085388a637eed3f0d47b3c6eabb8c9d00814d",
- "OpenVibe.Wiki": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",
- "OpenVibe.Blog": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",
- "OpenVibe.News": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",
- "OpenVibe.Reviews": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",
- "OpenVibe.Deals": "533450f9cc4a358ba50f353f06826ec3611b4ddc",
- "OpenVibe.Coupons": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",
- "OpenVibe.Trade": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",
- "OpenVibe.Codes": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",
- "OpenVibe.Host": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",
- "OpenVibe.Examples": "92eb7c3b0f50fea9f76086ed3eeda3664de93494"
+ "OpenVibe.Events": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",
+ "OpenVibe.Chat": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",
+ "OpenRe.Stream": "d9f42407f66648c547c32989ecf862b0bc949b63",
+ "OpenVibe.Billing": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",
+ "OpenVibe.Tips": "3cc8c8354183008026e38a99db9ef96014663467",
+ "OpenVibe.VIP": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",
+ "OpenVibe.AI": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",
+ "OpenVibe.Search": "04f9fd45c3c10b401704da2994700c14290b5051",
+ "OpenVibe.Sources": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",
+ "OpenVibe.Wiki": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",
+ "OpenVibe.Blog": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",
+ "OpenVibe.News": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",
+ "OpenVibe.Reviews": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",
+ "OpenVibe.Deals": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",
+ "OpenVibe.Coupons": "168262d1baa81ab1973863d66d52ab213711ef81",
+ "OpenVibe.Trade": "d515e46f7f32a6265a8e7feab49e97b9811094ed",
+ "OpenVibe.Codes": "1246445c4abaddcacf4d04adf172d601700833e3",
+ "OpenVibe.Host": "02c68f694a28f06e3056a05055f4515b3d4e7c64",
+ "OpenVibe.Examples": "058c71a5ddee4103a314ff211c5c869f9478a23f"
},
},
"prodSnapshot": {
"prodSnapshot": {
"host": "openvibe-oregon",
"host": "openvibe-oregon",
- "collectedAt": "2026-09-28T03:31:00.238Z"
+ "collectedAt": "2026-09-28T05:20:11.716Z"
},
},
"repos": [
"repos": [
{
{
@@ -38,13 +38,13 @@
@@ -38,13 +38,13 @@
"service": "live",
"service": "live",
"present": true,
"present": true,
"git": {
"git": {
- "head": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",
+ "head": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",
"branch": "main",
"branch": "main",
- "originMain": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",
- "committedAt": "2026-09-27T20:24:58-07:00"
+ "originMain": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",
+ "committedAt": "2026-09-27T21:07:16-07:00"
},
},
"sourceFiles": 221,
"sourceFiles": 221,
- "loc": 75126,
+ "loc": 75127,
"tables": [
"tables": [
{
{
"table": "arena_profiles",
"table": "arena_profiles",
@@ -5238,7 +5238,7 @@
@@ -5238,7 +5238,7 @@
"method": "GET",
"method": "GET",
"path": "/api/streams/:id/call",
"path": "/api/streams/:id/call",
"file": "server/streaming/routes.js",
"file": "server/streaming/routes.js",
- "line": 2491,
+ "line": 2492,
"target": "OpenVibe.Live",
"target": "OpenVibe.Live",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -5248,7 +5248,7 @@
@@ -5248,7 +5248,7 @@
"method": "PUT",
"method": "PUT",
"path": "/api/streams/:id/call",
"path": "/api/streams/:id/call",
"file": "server/streaming/routes.js",
"file": "server/streaming/routes.js",
- "line": 2452,
+ "line": 2453,
"target": "OpenVibe.Live",
"target": "OpenVibe.Live",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -5378,7 +5378,7 @@
@@ -5378,7 +5378,7 @@
"method": "POST",
"method": "POST",
"path": "/api/streams/channel/:username/follow",
"path": "/api/streams/channel/:username/follow",
"file": "server/streaming/routes.js",
"file": "server/streaming/routes.js",
- "line": 2402,
+ "line": 2403,
"target": "OpenVibe.Live",
"target": "OpenVibe.Live",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -5588,7 +5588,7 @@
@@ -5588,7 +5588,7 @@
"method": "GET",
"method": "GET",
"path": "/api/streams/rtmp-proxy/:streamId.flv",
"path": "/api/streams/rtmp-proxy/:streamId.flv",
"file": "server/streaming/routes.js",
"file": "server/streaming/routes.js",
- "line": 2512,
+ "line": 2513,
"target": "OpenVibe.Live",
"target": "OpenVibe.Live",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -9302,13 +9302,13 @@
@@ -9302,13 +9302,13 @@
"service": "network",
"service": "network",
"present": true,
"present": true,
"git": {
"git": {
- "head": "c022f86236f3e8251c924fae6c98494658b795a4",
+ "head": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",
"branch": "main",
"branch": "main",
- "originMain": "c022f86236f3e8251c924fae6c98494658b795a4",
- "committedAt": "2026-09-27T20:27:57-07:00"
+ "originMain": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",
+ "committedAt": "2026-09-27T21:10:04-07:00"
},
},
- "sourceFiles": 103,
- "loc": 21114,
+ "sourceFiles": 104,
+ "loc": 21166,
"tables": [
"tables": [
{
{
"table": "moderation_audit",
"table": "moderation_audit",
@@ -9619,13 +9619,13 @@
@@ -9619,13 +9619,13 @@
{
{
"table": "user_follows",
"table": "user_follows",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 42,
+ "line": 48,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "follow_import_holds",
"table": "follow_import_holds",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 57,
+ "line": 63,
"via": "repo"
"via": "repo"
},
},
{
{
@@ -9852,7 +9852,7 @@
@@ -9852,7 +9852,7 @@
"method": "GET",
"method": "GET",
"path": "/.well-known/openvibe",
"path": "/.well-known/openvibe",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 317,
+ "line": 326,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -9862,7 +9862,7 @@
@@ -9862,7 +9862,7 @@
"method": "GET",
"method": "GET",
"path": "/.well-known/web-identity",
"path": "/.well-known/web-identity",
"file": "server/index.js",
"file": "server/index.js",
- "line": 755,
+ "line": 757,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -9902,7 +9902,7 @@
@@ -9902,7 +9902,7 @@
"method": "GET",
"method": "GET",
"path": "/api/.well-known/jwks",
"path": "/api/.well-known/jwks",
"file": "server/index.js",
"file": "server/index.js",
- "line": 500,
+ "line": 502,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -10172,7 +10172,7 @@
@@ -10172,7 +10172,7 @@
"method": "GET",
"method": "GET",
"path": "/api/admin/ssh-info",
"path": "/api/admin/ssh-info",
"file": "server/index.js",
"file": "server/index.js",
- "line": 627,
+ "line": 629,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -10592,7 +10592,7 @@
@@ -10592,7 +10592,7 @@
"method": "GET",
"method": "GET",
"path": "/api/brand",
"path": "/api/brand",
"file": "server/index.js",
"file": "server/index.js",
- "line": 529,
+ "line": 531,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -10602,7 +10602,7 @@
@@ -10602,7 +10602,7 @@
"method": "GET",
"method": "GET",
"path": "/api/catalog.json",
"path": "/api/catalog.json",
"file": "server/index.js",
"file": "server/index.js",
- "line": 593,
+ "line": 595,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -10722,7 +10722,7 @@
@@ -10722,7 +10722,7 @@
"method": "GET",
"method": "GET",
"path": "/api/health",
"path": "/api/health",
"file": "server/index.js",
"file": "server/index.js",
- "line": 515,
+ "line": 517,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -10942,7 +10942,7 @@
@@ -10942,7 +10942,7 @@
"method": "GET",
"method": "GET",
"path": "/api/ready",
"path": "/api/ready",
"file": "server/index.js",
"file": "server/index.js",
- "line": 525,
+ "line": 527,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -10952,7 +10952,7 @@
@@ -10952,7 +10952,7 @@
"method": "GET",
"method": "GET",
"path": "/api/sso/targets",
"path": "/api/sso/targets",
"file": "server/index.js",
"file": "server/index.js",
- "line": 575,
+ "line": 577,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11092,7 +11092,7 @@
@@ -11092,7 +11092,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/follows",
"path": "/api/v1/follows",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 262,
+ "line": 271,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11102,7 +11102,7 @@
@@ -11102,7 +11102,7 @@
"method": "DELETE",
"method": "DELETE",
"path": "/api/v1/follows/:type/:target",
"path": "/api/v1/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 278,
+ "line": 287,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11112,7 +11112,7 @@
@@ -11112,7 +11112,7 @@
"method": "DELETE",
"method": "DELETE",
"path": "/api/v1/follows/:type/:target",
"path": "/api/v1/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 337,
+ "line": 346,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11122,7 +11122,7 @@
@@ -11122,7 +11122,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/follows/:type/:target",
"path": "/api/v1/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 291,
+ "line": 300,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11132,7 +11132,7 @@
@@ -11132,7 +11132,7 @@
"method": "PUT",
"method": "PUT",
"path": "/api/v1/follows/:type/:target",
"path": "/api/v1/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 268,
+ "line": 277,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11142,7 +11142,7 @@
@@ -11142,7 +11142,7 @@
"method": "PUT",
"method": "PUT",
"path": "/api/v1/follows/:type/:target",
"path": "/api/v1/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 324,
+ "line": 333,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11152,7 +11152,7 @@
@@ -11152,7 +11152,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/follows/:type/:target/followers",
"path": "/api/v1/follows/:type/:target/followers",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 304,
+ "line": 313,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11192,7 +11192,7 @@
@@ -11192,7 +11192,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/me/follows",
"path": "/api/v1/me/follows",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 262,
+ "line": 271,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11202,7 +11202,7 @@
@@ -11202,7 +11202,7 @@
"method": "DELETE",
"method": "DELETE",
"path": "/api/v1/me/follows/:type/:target",
"path": "/api/v1/me/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 278,
+ "line": 287,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11212,7 +11212,7 @@
@@ -11212,7 +11212,7 @@
"method": "DELETE",
"method": "DELETE",
"path": "/api/v1/me/follows/:type/:target",
"path": "/api/v1/me/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 337,
+ "line": 346,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11222,7 +11222,7 @@
@@ -11222,7 +11222,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/me/follows/:type/:target",
"path": "/api/v1/me/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 291,
+ "line": 300,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11232,7 +11232,7 @@
@@ -11232,7 +11232,7 @@
"method": "PUT",
"method": "PUT",
"path": "/api/v1/me/follows/:type/:target",
"path": "/api/v1/me/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 268,
+ "line": 277,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11242,7 +11242,7 @@
@@ -11242,7 +11242,7 @@
"method": "PUT",
"method": "PUT",
"path": "/api/v1/me/follows/:type/:target",
"path": "/api/v1/me/follows/:type/:target",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 324,
+ "line": 333,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11252,7 +11252,7 @@
@@ -11252,7 +11252,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/me/follows/:type/:target/followers",
"path": "/api/v1/me/follows/:type/:target/followers",
"file": "server/identity/follows.js",
"file": "server/identity/follows.js",
- "line": 304,
+ "line": 313,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11582,7 +11582,7 @@
@@ -11582,7 +11582,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry",
"path": "/api/v1/registry",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 318,
+ "line": 327,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11592,7 +11592,7 @@
@@ -11592,7 +11592,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/capabilities",
"path": "/api/v1/registry/capabilities",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 343,
+ "line": 352,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11602,7 +11602,7 @@
@@ -11602,7 +11602,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/capabilities/:id",
"path": "/api/v1/registry/capabilities/:id",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 348,
+ "line": 357,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11612,7 +11612,7 @@
@@ -11612,7 +11612,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/categories",
"path": "/api/v1/registry/categories",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 319,
+ "line": 328,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11622,7 +11622,7 @@
@@ -11622,7 +11622,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/categories/:id",
"path": "/api/v1/registry/categories/:id",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 320,
+ "line": 329,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11632,7 +11632,7 @@
@@ -11632,7 +11632,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/contracts",
"path": "/api/v1/registry/contracts",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 354,
+ "line": 363,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11642,7 +11642,7 @@
@@ -11642,7 +11642,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/domains/:domain",
"path": "/api/v1/registry/domains/:domain",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 337,
+ "line": 346,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11652,7 +11652,7 @@
@@ -11652,7 +11652,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/featured",
"path": "/api/v1/registry/featured",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 325,
+ "line": 334,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11662,7 +11662,7 @@
@@ -11662,7 +11662,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/health",
"path": "/api/v1/registry/health",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 372,
+ "line": 381,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11672,7 +11672,7 @@
@@ -11672,7 +11672,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/namespaces",
"path": "/api/v1/registry/namespaces",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 353,
+ "line": 362,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11682,7 +11682,7 @@
@@ -11682,7 +11682,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/releases",
"path": "/api/v1/registry/releases",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 371,
+ "line": 380,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11692,7 +11692,7 @@
@@ -11692,7 +11692,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/search",
"path": "/api/v1/registry/search",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 378,
+ "line": 387,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11702,7 +11702,7 @@
@@ -11702,7 +11702,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/services",
"path": "/api/v1/registry/services",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 326,
+ "line": 335,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11712,7 +11712,7 @@
@@ -11712,7 +11712,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/services/:id",
"path": "/api/v1/registry/services/:id",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 332,
+ "line": 341,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11722,7 +11722,7 @@
@@ -11722,7 +11722,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/topics",
"path": "/api/v1/registry/topics",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 355,
+ "line": 364,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -11732,7 +11732,7 @@
@@ -11732,7 +11732,7 @@
"method": "GET",
"method": "GET",
"path": "/api/v1/registry/topics/:topic",
"path": "/api/v1/registry/topics/:topic",
"file": "server/registry/ecosystem.js",
"file": "server/registry/ecosystem.js",
- "line": 366,
+ "line": 375,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -12652,7 +12652,7 @@
@@ -12652,7 +12652,7 @@
"method": "GET",
"method": "GET",
"path": "/llms.txt",
"path": "/llms.txt",
"file": "server/index.js",
"file": "server/index.js",
- "line": 733,
+ "line": 735,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -12862,7 +12862,7 @@
@@ -12862,7 +12862,7 @@
"method": "GET",
"method": "GET",
"path": "/openvibe-sw.js",
"path": "/openvibe-sw.js",
"file": "server/index.js",
"file": "server/index.js",
- "line": 778,
+ "line": 780,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -13012,7 +13012,7 @@
@@ -13012,7 +13012,7 @@
"method": "GET",
"method": "GET",
"path": "/sso/check",
"path": "/sso/check",
"file": "server/index.js",
"file": "server/index.js",
- "line": 762,
+ "line": 764,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -13062,7 +13062,7 @@
@@ -13062,7 +13062,7 @@
"method": "GET",
"method": "GET",
"path": "/tos",
"path": "/tos",
"file": "server/index.js",
"file": "server/index.js",
- "line": 589,
+ "line": 591,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -13282,7 +13282,7 @@
@@ -13282,7 +13282,7 @@
"method": "GET",
"method": "GET",
"path": "/verify-email",
"path": "/verify-email",
"file": "server/index.js",
"file": "server/index.js",
- "line": 745,
+ "line": 747,
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -13738,7 +13738,7 @@
@@ -13738,7 +13738,7 @@
},
},
{
{
"via": "live.internalUrl",
"via": "live.internalUrl",
- "line": 660
+ "line": 662
}
}
]
]
},
},
@@ -13786,15 +13786,15 @@
@@ -13786,15 +13786,15 @@
"refs": [
"refs": [
{
{
"via": "OV_BLOG_INTERNAL_URL",
"via": "OV_BLOG_INTERNAL_URL",
- "line": 498
+ "line": 500
},
},
{
{
"via": "blogUrl",
"via": "blogUrl",
- "line": 498
+ "line": 500
},
},
{
{
"via": ":4810",
"via": ":4810",
- "line": 498
+ "line": 500
}
}
]
]
},
},
@@ -13803,19 +13803,19 @@
@@ -13803,19 +13803,19 @@
"refs": [
"refs": [
{
{
"via": "eventsUrl",
"via": "eventsUrl",
- "line": 557
+ "line": 559
},
},
{
{
"via": "eventsInternalUrl",
"via": "eventsInternalUrl",
- "line": 557
+ "line": 559
},
},
{
{
"via": "eventsUrl",
"via": "eventsUrl",
- "line": 644
+ "line": 646
},
},
{
{
"via": "eventsInternalUrl",
"via": "eventsInternalUrl",
- "line": 644
+ "line": 646
}
}
]
]
}
}
@@ -13935,7 +13935,7 @@
@@ -13935,7 +13935,7 @@
"kind": "setInterval",
"kind": "setInterval",
"name": null,
"name": null,
"intervalMs": 3600000,
"intervalMs": 3600000,
- "line": 851,
+ "line": 853,
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
@@ -13946,7 +13946,7 @@
@@ -13946,7 +13946,7 @@
"kind": "setInterval",
"kind": "setInterval",
"name": null,
"name": null,
"intervalMs": 120000,
"intervalMs": 120000,
- "line": 854,
+ "line": 856,
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
@@ -13957,7 +13957,7 @@
@@ -13957,7 +13957,7 @@
"kind": "setInterval",
"kind": "setInterval",
"name": null,
"name": null,
"intervalMs": 300000,
"intervalMs": 300000,
- "line": 868,
+ "line": 870,
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
@@ -13968,7 +13968,7 @@
@@ -13968,7 +13968,7 @@
"kind": "setInterval",
"kind": "setInterval",
"name": null,
"name": null,
"intervalMs": 360000,
"intervalMs": 360000,
- "line": 871,
+ "line": 873,
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
@@ -13979,7 +13979,7 @@
@@ -13979,7 +13979,7 @@
"kind": "setInterval",
"kind": "setInterval",
"name": null,
"name": null,
"intervalMs": 60000,
"intervalMs": 60000,
- "line": 879,
+ "line": 881,
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
@@ -13990,7 +13990,7 @@
@@ -13990,7 +13990,7 @@
"kind": "setInterval",
"kind": "setInterval",
"name": null,
"name": null,
"intervalMs": null,
"intervalMs": null,
- "line": 882,
+ "line": 884,
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Network",
"target": "OpenVibe.Network",
"disposition": "keep",
"disposition": "keep",
@@ -14022,7 +14022,7 @@
@@ -14022,7 +14022,7 @@
],
],
"contractTodos": 3,
"contractTodos": 3,
"unresolvedMounts": [],
"unresolvedMounts": [],
- "testFiles": 77,
+ "testFiles": 78,
"ci": true
"ci": true
},
},
{
{
@@ -14030,13 +14030,13 @@
@@ -14030,13 +14030,13 @@
"service": "shared",
"service": "shared",
"present": true,
"present": true,
"git": {
"git": {
- "head": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",
+ "head": "919c10811cc3a4dc62fda32228f5d82a7aef1045",
"branch": "main",
"branch": "main",
- "originMain": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",
- "committedAt": "2026-09-27T20:13:02-07:00"
+ "originMain": "919c10811cc3a4dc62fda32228f5d82a7aef1045",
+ "committedAt": "2026-09-27T21:03:43-07:00"
},
},
- "sourceFiles": 58,
- "loc": 15503,
+ "sourceFiles": 59,
+ "loc": 15638,
"tables": [
"tables": [
{
{
"table": "config_snapshots",
"table": "config_snapshots",
@@ -14162,6 +14162,10 @@
@@ -14162,6 +14162,10 @@
"release.js",
"release.js",
"release.js"
"release.js"
],
],
+ "OV_TEST_STRICT": [
+ "test-runner.js",
+ "test-runner.js"
+ ],
"TRACE_HOSTS": [
"TRACE_HOSTS": [
"trace.js",
"trace.js",
"trace.js"
"trace.js"
@@ -14393,7 +14397,7 @@
@@ -14393,7 +14397,7 @@
],
],
"contractTodos": 0,
"contractTodos": 0,
"unresolvedMounts": [],
"unresolvedMounts": [],
- "testFiles": 39,
+ "testFiles": 40,
"ci": true
"ci": true
},
},
{
{
@@ -14401,13 +14405,13 @@
@@ -14401,13 +14405,13 @@
"service": "media",
"service": "media",
"present": true,
"present": true,
"git": {
"git": {
- "head": "14cac06886649848c332cfa564aa6b3594ea09bc",
+ "head": "47b21bde0b4863344fafbb90109922fbf8757687",
"branch": "main",
"branch": "main",
- "originMain": "14cac06886649848c332cfa564aa6b3594ea09bc",
- "committedAt": "2026-09-27T20:17:24-07:00"
+ "originMain": "47b21bde0b4863344fafbb90109922fbf8757687",
+ "committedAt": "2026-09-27T22:17:11-07:00"
},
},
"sourceFiles": 79,
"sourceFiles": 79,
- "loc": 20861,
+ "loc": 20902,
"tables": [
"tables": [
{
{
"table": "account_data_events",
"table": "account_data_events",
@@ -14619,7 +14623,7 @@
@@ -14619,7 +14623,7 @@
"method": "GET",
"method": "GET",
"path": "/api/ready",
"path": "/api/ready",
"file": "server/observability.js",
"file": "server/observability.js",
- "line": 156,
+ "line": 158,
"target": "OpenVibe.Media",
"target": "OpenVibe.Media",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -16664,7 +16668,7 @@
@@ -16664,7 +16668,7 @@
],
],
"contractTodos": 0,
"contractTodos": 0,
"unresolvedMounts": [],
"unresolvedMounts": [],
- "testFiles": 67,
+ "testFiles": 68,
"ci": true
"ci": true
},
},
{
{
@@ -16672,10 +16676,10 @@
@@ -16672,10 +16676,10 @@
"service": "tools",
"service": "tools",
"present": true,
"present": true,
"git": {
"git": {
- "head": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",
+ "head": "9339e1500139b229e2e2f59ed7cba336dced8897",
"branch": "main",
"branch": "main",
- "originMain": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",
- "committedAt": "2026-09-27T20:19:31-07:00"
+ "originMain": "9339e1500139b229e2e2f59ed7cba336dced8897",
+ "committedAt": "2026-09-27T21:22:24-07:00"
},
},
"sourceFiles": 176,
"sourceFiles": 176,
"loc": 30522,
"loc": 30522,
@@ -18905,10 +18909,10 @@
@@ -18905,10 +18909,10 @@
"service": "community",
"service": "community",
"present": true,
"present": true,
"git": {
"git": {
- "head": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",
+ "head": "581d80535f4bd1081afeb7a564392d4e1e5eb000",
"branch": "main",
"branch": "main",
- "originMain": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",
- "committedAt": "2026-09-27T20:14:58-07:00"
+ "originMain": "581d80535f4bd1081afeb7a564392d4e1e5eb000",
+ "committedAt": "2026-09-27T21:17:37-07:00"
},
},
"sourceFiles": 66,
"sourceFiles": 66,
"loc": 12037,
"loc": 12037,
@@ -22082,10 +22086,10 @@
@@ -22082,10 +22086,10 @@
"service": "events",
"service": "events",
"present": true,
"present": true,
"git": {
"git": {
- "head": "19919ece79707eed051c3f18ab37b7fdb6d939a6",
+ "head": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",
"branch": "main",
"branch": "main",
- "originMain": "19919ece79707eed051c3f18ab37b7fdb6d939a6",
- "committedAt": "2026-09-27T20:03:54-07:00"
+ "originMain": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",
+ "committedAt": "2026-09-27T21:12:06-07:00"
},
},
"sourceFiles": 20,
"sourceFiles": 20,
"loc": 3357,
"loc": 3357,
@@ -22534,10 +22538,10 @@
@@ -22534,10 +22538,10 @@
"service": "chat",
"service": "chat",
"present": true,
"present": true,
"git": {
"git": {
- "head": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",
+ "head": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",
"branch": "main",
"branch": "main",
- "originMain": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",
- "committedAt": "2026-09-27T20:03:11-07:00"
+ "originMain": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",
+ "committedAt": "2026-09-27T21:25:00-07:00"
},
},
"sourceFiles": 53,
"sourceFiles": 53,
"loc": 16898,
"loc": 16898,
@@ -24520,13 +24524,13 @@
@@ -24520,13 +24524,13 @@
"service": "openre",
"service": "openre",
"present": true,
"present": true,
"git": {
"git": {
- "head": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",
+ "head": "d9f42407f66648c547c32989ecf862b0bc949b63",
"branch": "main",
"branch": "main",
- "originMain": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",
- "committedAt": "2026-09-27T20:06:06-07:00"
+ "originMain": "d9f42407f66648c547c32989ecf862b0bc949b63",
+ "committedAt": "2026-09-27T21:16:46-07:00"
},
},
"sourceFiles": 36,
"sourceFiles": 36,
- "loc": 4806,
+ "loc": 4834,
"tables": [
"tables": [
{
{
"table": "stream_definitions",
"table": "stream_definitions",
@@ -24622,7 +24626,7 @@
@@ -24622,7 +24626,7 @@
"method": "GET",
"method": "GET",
"path": "/api/health",
"path": "/api/health",
"file": "server/app.js",
"file": "server/app.js",
- "line": 48,
+ "line": 50,
"target": "OpenRe.Stream",
"target": "OpenRe.Stream",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -24632,7 +24636,7 @@
@@ -24632,7 +24636,7 @@
"method": "GET",
"method": "GET",
"path": "/api/ready",
"path": "/api/ready",
"file": "server/app.js",
"file": "server/app.js",
- "line": 61,
+ "line": 110,
"target": "OpenRe.Stream",
"target": "OpenRe.Stream",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -24772,7 +24776,7 @@
@@ -24772,7 +24776,7 @@
"method": "GET",
"method": "GET",
"path": "/play/:file",
"path": "/play/:file",
"file": "server/app.js",
"file": "server/app.js",
- "line": 92,
+ "line": 120,
"target": "OpenRe.Stream",
"target": "OpenRe.Stream",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -24782,7 +24786,7 @@
@@ -24782,7 +24786,7 @@
"method": "GET",
"method": "GET",
"path": "/robots.txt",
"path": "/robots.txt",
"file": "server/app.js",
"file": "server/app.js",
- "line": 110,
+ "line": 138,
"target": "OpenRe.Stream",
"target": "OpenRe.Stream",
"disposition": "keep",
"disposition": "keep",
"wave": "-",
"wave": "-",
@@ -25285,10 +25289,10 @@
@@ -25285,10 +25289,10 @@
"service": "billing",
"service": "billing",
"present": true,
"present": true,
"git": {
"git": {
- "head": "f24684bb84ec1670bd08670891e6742fa433a548",
+ "head": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",
"branch": "main",
"branch": "main",
- "originMain": "f24684bb84ec1670bd08670891e6742fa433a548",
- "committedAt": "2026-09-27T20:08:06-07:00"
+ "originMain": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",
+ "committedAt": "2026-09-27T21:18:42-07:00"
},
},
"sourceFiles": 38,
"sourceFiles": 38,
"loc": 5452,
"loc": 5452,
@@ -26220,10 +26224,10 @@
@@ -26220,10 +26224,10 @@
"service": "tips",
"service": "tips",
"present": true,
"present": true,
"git": {
"git": {
- "head": "13986b59e697d12a328a4f12e993295445ca40be",
+ "head": "3cc8c8354183008026e38a99db9ef96014663467",
"branch": "main",
"branch": "main",
- "originMain": "13986b59e697d12a328a4f12e993295445ca40be",
- "committedAt": "2026-09-27T20:01:20-07:00"
+ "originMain": "3cc8c8354183008026e38a99db9ef96014663467",
+ "committedAt": "2026-09-27T21:21:09-07:00"
},
},
"sourceFiles": 30,
"sourceFiles": 30,
"loc": 5346,
"loc": 5346,
@@ -27185,10 +27189,10 @@
@@ -27185,10 +27189,10 @@
"service": "vip",
"service": "vip",
"present": true,
"present": true,
"git": {
"git": {
- "head": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",
+ "head": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",
"branch": "main",
"branch": "main",
- "originMain": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",
- "committedAt": "2026-09-27T20:01:51-07:00"
+ "originMain": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",
+ "committedAt": "2026-09-27T21:20:38-07:00"
},
},
"sourceFiles": 30,
"sourceFiles": 30,
"loc": 4293,
"loc": 4293,
@@ -27905,10 +27909,10 @@
@@ -27905,10 +27909,10 @@
"service": "ai",
"service": "ai",
"present": true,
"present": true,
"git": {
"git": {
- "head": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",
+ "head": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",
"branch": "main",
"branch": "main",
- "originMain": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",
- "committedAt": "2026-09-27T20:07:22-07:00"
+ "originMain": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",
+ "committedAt": "2026-09-27T21:20:27-07:00"
},
},
"sourceFiles": 44,
"sourceFiles": 44,
"loc": 7919,
"loc": 7919,
@@ -28923,10 +28927,10 @@
@@ -28923,10 +28927,10 @@
"service": "search",
"service": "search",
"present": true,
"present": true,
"git": {
"git": {
- "head": "e8511d849720534a9ffcd54b052663111e5b1e6f",
+ "head": "04f9fd45c3c10b401704da2994700c14290b5051",
"branch": "main",
"branch": "main",
- "originMain": "e8511d849720534a9ffcd54b052663111e5b1e6f",
- "committedAt": "2026-09-27T19:55:17-07:00"
+ "originMain": "04f9fd45c3c10b401704da2994700c14290b5051",
+ "committedAt": "2026-09-27T21:16:50-07:00"
},
},
"sourceFiles": 18,
"sourceFiles": 18,
"loc": 2868,
"loc": 2868,
@@ -29369,10 +29373,10 @@
@@ -29369,10 +29373,10 @@
"service": "sources",
"service": "sources",
"present": true,
"present": true,
"git": {
"git": {
- "head": "167085388a637eed3f0d47b3c6eabb8c9d00814d",
+ "head": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",
"branch": "main",
"branch": "main",
- "originMain": "167085388a637eed3f0d47b3c6eabb8c9d00814d",
- "committedAt": "2026-09-27T19:55:56-07:00"
+ "originMain": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",
+ "committedAt": "2026-09-27T21:17:07-07:00"
},
},
"sourceFiles": 24,
"sourceFiles": 24,
"loc": 3100,
"loc": 3100,
@@ -29753,10 +29757,10 @@
@@ -29753,10 +29757,10 @@
"service": "wiki",
"service": "wiki",
"present": true,
"present": true,
"git": {
"git": {
- "head": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",
+ "head": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",
"branch": "main",
"branch": "main",
- "originMain": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",
- "committedAt": "2026-09-27T20:00:00-07:00"
+ "originMain": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",
+ "committedAt": "2026-09-27T21:17:39-07:00"
},
},
"sourceFiles": 23,
"sourceFiles": 23,
"loc": 4751,
"loc": 4751,
@@ -30762,10 +30766,10 @@
@@ -30762,10 +30766,10 @@
"service": "blog",
"service": "blog",
"present": true,
"present": true,
"git": {
"git": {
- "head": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",
+ "head": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",
"branch": "main",
"branch": "main",
- "originMain": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",
- "committedAt": "2026-09-27T19:58:44-07:00"
+ "originMain": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",
+ "committedAt": "2026-09-27T21:20:31-07:00"
},
},
"sourceFiles": 34,
"sourceFiles": 34,
"loc": 5185,
"loc": 5185,
@@ -31779,13 +31783,13 @@
@@ -31779,13 +31783,13 @@
"service": "news",
"service": "news",
"present": true,
"present": true,
"git": {
"git": {
- "head": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",
+ "head": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",
"branch": "main",
"branch": "main",
- "originMain": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",
- "committedAt": "2026-09-27T19:57:37-07:00"
+ "originMain": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",
+ "committedAt": "2026-09-27T21:21:11-07:00"
},
},
"sourceFiles": 34,
"sourceFiles": 34,
- "loc": 5251,
+ "loc": 5252,
"tables": [
"tables": [
{
{
"table": "news_topics",
"table": "news_topics",
@@ -32611,10 +32615,10 @@
@@ -32611,10 +32615,10 @@
"service": "reviews",
"service": "reviews",
"present": true,
"present": true,
"git": {
"git": {
- "head": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",
+ "head": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",
"branch": "main",
"branch": "main",
- "originMain": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",
- "committedAt": "2026-09-27T19:59:21-07:00"
+ "originMain": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",
+ "committedAt": "2026-09-27T21:17:09-07:00"
},
},
"sourceFiles": 23,
"sourceFiles": 23,
"loc": 4792,
"loc": 4792,
@@ -33552,10 +33556,10 @@
@@ -33552,10 +33556,10 @@
"service": "deals",
"service": "deals",
"present": true,
"present": true,
"git": {
"git": {
- "head": "533450f9cc4a358ba50f353f06826ec3611b4ddc",
+ "head": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",
"branch": "main",
"branch": "main",
- "originMain": "533450f9cc4a358ba50f353f06826ec3611b4ddc",
- "committedAt": "2026-09-27T19:57:12-07:00"
+ "originMain": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",
+ "committedAt": "2026-09-27T21:20:34-07:00"
},
},
"sourceFiles": 36,
"sourceFiles": 36,
"loc": 4980,
"loc": 4980,
@@ -34502,10 +34506,10 @@
@@ -34502,10 +34506,10 @@
"service": "coupons",
"service": "coupons",
"present": true,
"present": true,
"git": {
"git": {
- "head": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",
+ "head": "168262d1baa81ab1973863d66d52ab213711ef81",
"branch": "main",
"branch": "main",
- "originMain": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",
- "committedAt": "2026-09-27T19:56:35-07:00"
+ "originMain": "168262d1baa81ab1973863d66d52ab213711ef81",
+ "committedAt": "2026-09-27T21:18:44-07:00"
},
},
"sourceFiles": 29,
"sourceFiles": 29,
"loc": 4289,
"loc": 4289,
@@ -35295,10 +35299,10 @@
@@ -35295,10 +35299,10 @@
"service": "trade",
"service": "trade",
"present": true,
"present": true,
"git": {
"git": {
- "head": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",
+ "head": "d515e46f7f32a6265a8e7feab49e97b9811094ed",
"branch": "main",
"branch": "main",
- "originMain": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",
- "committedAt": "2026-09-27T19:58:02-07:00"
+ "originMain": "d515e46f7f32a6265a8e7feab49e97b9811094ed",
+ "committedAt": "2026-09-27T21:21:13-07:00"
},
},
"sourceFiles": 37,
"sourceFiles": 37,
"loc": 4562,
"loc": 4562,
@@ -35668,10 +35672,10 @@
@@ -35668,10 +35672,10 @@
"service": "codes",
"service": "codes",
"present": true,
"present": true,
"git": {
"git": {
- "head": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",
+ "head": "1246445c4abaddcacf4d04adf172d601700833e3",
"branch": "main",
"branch": "main",
- "originMain": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",
- "committedAt": "2026-09-27T20:27:52-07:00"
+ "originMain": "1246445c4abaddcacf4d04adf172d601700833e3",
+ "committedAt": "2026-09-27T21:20:29-07:00"
},
},
"sourceFiles": 32,
"sourceFiles": 32,
"loc": 5072,
"loc": 5072,
@@ -37062,10 +37066,10 @@
@@ -37062,10 +37066,10 @@
"service": "host",
"service": "host",
"present": true,
"present": true,
"git": {
"git": {
- "head": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",
+ "head": "02c68f694a28f06e3056a05055f4515b3d4e7c64",
"branch": "main",
"branch": "main",
- "originMain": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",
- "committedAt": "2026-09-27T20:22:17-07:00"
+ "originMain": "02c68f694a28f06e3056a05055f4515b3d4e7c64",
+ "committedAt": "2026-09-27T22:19:53-07:00"
},
},
"sourceFiles": 68,
"sourceFiles": 68,
"loc": 11899,
"loc": 11899,
@@ -37993,10 +37997,10 @@
@@ -37993,10 +37997,10 @@
"service": "examples",
"service": "examples",
"present": true,
"present": true,
"git": {
"git": {
- "head": "92eb7c3b0f50fea9f76086ed3eeda3664de93494",
+ "head": "058c71a5ddee4103a314ff211c5c869f9478a23f",
"branch": "main",
"branch": "main",
- "originMain": "92eb7c3b0f50fea9f76086ed3eeda3664de93494",
- "committedAt": "2026-09-27T20:10:31-07:00"
+ "originMain": "058c71a5ddee4103a314ff211c5c869f9478a23f",
+ "committedAt": "2026-09-27T21:21:32-07:00"
},
},
"sourceFiles": 11,
"sourceFiles": 11,
"loc": 1604,
"loc": 1604,
@@ -38161,62 +38165,62 @@
@@ -38161,62 +38165,62 @@
{
{
"repo": "OpenRe.Stream",
"repo": "OpenRe.Stream",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.AI",
"repo": "OpenVibe.AI",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Billing",
"repo": "OpenVibe.Billing",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Blog",
"repo": "OpenVibe.Blog",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Chat",
"repo": "OpenVibe.Chat",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Codes",
"repo": "OpenVibe.Codes",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Community",
"repo": "OpenVibe.Community",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Coupons",
"repo": "OpenVibe.Coupons",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Deals",
"repo": "OpenVibe.Deals",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Events",
"repo": "OpenVibe.Events",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Games",
"repo": "OpenVibe.Games",
@@ -38227,44 +38231,44 @@
@@ -38227,44 +38231,44 @@
{
{
"repo": "OpenVibe.Host",
"repo": "OpenVibe.Host",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.23.1",
+ "spec": "v1.25.0",
"state": "current"
"state": "current"
},
},
{
{
"repo": "OpenVibe.Media",
"repo": "OpenVibe.Media",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Network",
"repo": "OpenVibe.Network",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
+ "spec": "v1.24.0",
"state": "behind"
"state": "behind"
},
},
{
{
"repo": "OpenVibe.News",
"repo": "OpenVibe.News",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Reviews",
"repo": "OpenVibe.Reviews",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Search",
"repo": "OpenVibe.Search",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Sites",
"repo": "OpenVibe.Sites",
@@ -38275,14 +38279,14 @@
@@ -38275,14 +38279,14 @@
{
{
"repo": "OpenVibe.Sources",
"repo": "OpenVibe.Sources",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Tips",
"repo": "OpenVibe.Tips",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Tools",
"repo": "OpenVibe.Tools",
@@ -38335,20 +38339,20 @@
@@ -38335,20 +38339,20 @@
{
{
"repo": "OpenVibe.Trade",
"repo": "OpenVibe.Trade",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.VIP",
"repo": "OpenVibe.VIP",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
},
},
{
{
"repo": "OpenVibe.Wiki",
"repo": "OpenVibe.Wiki",
"manifest": "package.json",
"manifest": "package.json",
- "spec": "v1.22.0",
- "state": "behind"
+ "spec": "v1.25.0",
+ "state": "current"
}
}
],
],
"ownership": [
"ownership": [
@@ -44910,7 +44914,7 @@
@@ -44910,7 +44914,7 @@
"repo": "OpenVibe.Network",
"repo": "OpenVibe.Network",
"table": "follow_import_holds",
"table": "follow_import_holds",
"declaredAt": [
"declaredAt": [
- "server/identity/follows.js:57"
+ "server/identity/follows.js:63"
],
],
"prodDbs": [
"prodDbs": [
"network.db"
"network.db"
@@ -45435,7 +45439,7 @@
@@ -45435,7 +45439,7 @@
"repo": "OpenVibe.Network",
"repo": "OpenVibe.Network",
"table": "user_follows",
"table": "user_follows",
"declaredAt": [
"declaredAt": [
- "server/identity/follows.js:42"
+ "server/identity/follows.js:48"
],
],
"prodDbs": [
"prodDbs": [
"network.db"
"network.db"
@@ -48816,7 +48820,7 @@
@@ -48816,7 +48820,7 @@
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Blog",
"target": "OpenVibe.Blog",
"via": "OV_BLOG_INTERNAL_URL, blogUrl, :4810",
"via": "OV_BLOG_INTERNAL_URL, blogUrl, :4810",
- "lines": "498,498,498",
+ "lines": "500,500,500",
"auth": "internal-key, bearer",
"auth": "internal-key, bearer",
"timeout": false,
"timeout": false,
"retry": false
"retry": false
@@ -48826,7 +48830,7 @@
@@ -48826,7 +48830,7 @@
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Events",
"target": "OpenVibe.Events",
"via": "eventsUrl, eventsInternalUrl",
"via": "eventsUrl, eventsInternalUrl",
- "lines": "557,557,644,644",
+ "lines": "559,559,646,646",
"auth": "internal-key, bearer",
"auth": "internal-key, bearer",
"timeout": false,
"timeout": false,
"retry": false
"retry": false
@@ -48896,7 +48900,7 @@
@@ -48896,7 +48900,7 @@
"file": "server/index.js",
"file": "server/index.js",
"target": "OpenVibe.Live",
"target": "OpenVibe.Live",
"via": ":3000, live.internalUrl, liveUrl",
"via": ":3000, live.internalUrl, liveUrl",
- "lines": "243,313,375,375,660",
+ "lines": "243,313,375,375,662",
"auth": "internal-key, bearer",
"auth": "internal-key, bearer",
"timeout": false,
"timeout": false,
"retry": false
"retry": false
@@ -59155,6 +59159,15 @@
@@ -59155,6 +59159,15 @@
],
],
"prod": null
"prod": null
},
},
+ {
+ "repo": "OpenVibe.Shared",
+ "name": "OV_TEST_STRICT",
+ "secret": false,
+ "files": [
+ "test-runner.js"
+ ],
+ "prod": null
+ },
{
{
"repo": "OpenVibe.Shared",
"repo": "OpenVibe.Shared",
"name": "OV_TEXT_URL",
"name": "OV_TEXT_URL",
@@ -61769,6 +61782,12 @@
@@ -61769,6 +61782,12 @@
}
}
],
],
"discrepancies": [
"discrepancies": [
+ {
+ "severity": "medium",
+ "area": "deploy",
+ "subject": "network",
+ "detail": "deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb"
+ },
{
{
"severity": "low",
"severity": "low",
"area": "database",
"area": "database",
@@ -61839,7 +61858,7 @@
@@ -61839,7 +61858,7 @@
"severity": "low",
"severity": "low",
"area": "database",
"area": "database",
"subject": "/opt/openvibe.live/shared/data/live.db",
"subject": "/opt/openvibe.live/shared/data/live.db",
- "detail": "284.7 MB, 162 tables, not a database the service opens (services.json): stale file or undeclared copy"
+ "detail": "284.7 MB, 163 tables, not a database the service opens (services.json): stale file or undeclared copy"
},
},
{
{
"severity": "low",
"severity": "low",
@@ -61865,6 +61884,12 @@
@@ -61865,6 +61884,12 @@
"subject": "/opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db",
"subject": "/opt/openvibe.media/data/reports/h15-repair-applied-20260925.media.db",
"detail": "11.3 MB, 27 tables, not a database the service opens (services.json): stale file or undeclared copy"
"detail": "11.3 MB, 27 tables, not a database the service opens (services.json): stale file or undeclared copy"
},
},
+ {
+ "severity": "low",
+ "area": "database",
+ "subject": "/opt/openvibe.media/data/reports/h15-resize-applied-20260928.media.db",
+ "detail": "11.7 MB, 36 tables, not a database the service opens (services.json): stale file or undeclared copy"
+ },
{
{
"severity": "low",
"severity": "low",
"area": "database",
"area": "database",
@@ -62045,107 +62070,17 @@
@@ -62045,107 +62070,17 @@
"subject": "/var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db",
"subject": "/var/lib/openvibe-community/community.pre-live-comments-20260923T191345Z.db",
"detail": "2.0 MB copy (backup, import snapshot or rehearsal) kept beside the service data"
"detail": "2.0 MB copy (backup, import snapshot or rehearsal) kept beside the service data"
},
},
- {
- "severity": "low",
- "area": "deploy",
- "subject": "ai",
- "detail": "deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "billing",
- "detail": "deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "blog",
- "detail": "deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "chat",
- "detail": "deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "community",
- "detail": "deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "coupons",
- "detail": "deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "deals",
- "detail": "deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "events",
- "detail": "deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json)"
- },
{
{
"severity": "low",
"severity": "low",
"area": "deploy",
"area": "deploy",
"subject": "games",
"subject": "games",
"detail": "deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json)"
"detail": "deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json)"
},
},
- {
- "severity": "low",
- "area": "deploy",
- "subject": "host",
- "detail": "deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md)"
- },
{
{
"severity": "low",
"severity": "low",
"area": "deploy",
"area": "deploy",
"subject": "live",
"subject": "live",
- "detail": "deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "media",
- "detail": "deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "network",
- "detail": "deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "news",
- "detail": "deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "openre",
- "detail": "deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "reviews",
- "detail": "deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "search",
- "detail": "deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json)"
+ "detail": "deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json)"
},
},
{
{
"severity": "low",
"severity": "low",
@@ -62153,41 +62088,11 @@
@@ -62153,41 +62088,11 @@
"subject": "sites",
"subject": "sites",
"detail": "deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json)"
"detail": "deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json)"
},
},
- {
- "severity": "low",
- "area": "deploy",
- "subject": "sources",
- "detail": "deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "tips",
- "detail": "deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json)"
- },
{
{
"severity": "low",
"severity": "low",
"area": "deploy",
"area": "deploy",
"subject": "tools",
"subject": "tools",
- "detail": "deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "trade",
- "detail": "deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "vip",
- "detail": "deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json)"
- },
- {
- "severity": "low",
- "area": "deploy",
- "subject": "wiki",
- "detail": "deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json)"
+ "detail": "deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more)"
},
},
{
{
"severity": "low",
"severity": "low",
@@ -64039,10 +63944,10 @@
@@ -64039,10 +63944,10 @@
"outbound.internal-key": "40 of 112 call sites authenticate with the shared internal key",
"outbound.internal-key": "40 of 112 call sites authenticate with the shared internal key",
"ws.servers": "12 WebSocket server constructions",
"ws.servers": "12 WebSocket server constructions",
"tables.analytics-copies": "2 repos carry their own analytics_events",
"tables.analytics-copies": "2 repos carry their own analytics_events",
- "shared.pins": "25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0",
- "shared.drift": "31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0)",
+ "shared.pins": "25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0",
+ "shared.drift": "11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0)",
"ci.repos": "27 of 27 scanned repos have .github/workflows",
"ci.repos": "27 of 27 scanned repos have .github/workflows",
- "deploy.drift": "24 service(s) not running origin/main",
+ "deploy.drift": "1 service(s) behind origin/main in what runs, 4 more only in documentation and tests",
"tests.OpenVibe.Live": "158 test files",
"tests.OpenVibe.Live": "158 test files",
"tables.OpenVibe.Live": "126 tables",
"tables.OpenVibe.Live": "126 tables",
"tables.OpenVibe.Live.target:OpenVibe.Live": "35 Live tables target OpenVibe.Live",
"tables.OpenVibe.Live.target:OpenVibe.Live": "35 Live tables target OpenVibe.Live",
@@ -64059,15 +63964,15 @@
@@ -64059,15 +63964,15 @@
"tables.OpenVibe.Live.target:OpenVibe.Billing": "2 Live tables target OpenVibe.Billing",
"tables.OpenVibe.Live.target:OpenVibe.Billing": "2 Live tables target OpenVibe.Billing",
"tables.OpenVibe.Live.target:OpenVibe.Billing + OpenVibe.VIP": "1 Live tables target OpenVibe.Billing + OpenVibe.VIP",
"tables.OpenVibe.Live.target:OpenVibe.Billing + OpenVibe.VIP": "1 Live tables target OpenVibe.Billing + OpenVibe.VIP",
"tables.OpenVibe.Live.target:OpenVibe.Codes": "2 Live tables target OpenVibe.Codes",
"tables.OpenVibe.Live.target:OpenVibe.Codes": "2 Live tables target OpenVibe.Codes",
- "tests.OpenVibe.Network": "77 test files",
+ "tests.OpenVibe.Network": "78 test files",
"tables.OpenVibe.Network": "70 tables",
"tables.OpenVibe.Network": "70 tables",
"tables.OpenVibe.Network.target:OpenVibe.Network": "75 Network tables target OpenVibe.Network",
"tables.OpenVibe.Network.target:OpenVibe.Network": "75 Network tables target OpenVibe.Network",
"tables.OpenVibe.Network.target:OpenVibe.Billing (loyalty ledger)": "2 Network tables target OpenVibe.Billing (loyalty ledger)",
"tables.OpenVibe.Network.target:OpenVibe.Billing (loyalty ledger)": "2 Network tables target OpenVibe.Billing (loyalty ledger)",
"tables.OpenVibe.Network.target:OpenVibe.Events": "1 Network tables target OpenVibe.Events",
"tables.OpenVibe.Network.target:OpenVibe.Events": "1 Network tables target OpenVibe.Events",
- "tests.OpenVibe.Shared": "39 test files",
+ "tests.OpenVibe.Shared": "40 test files",
"tables.OpenVibe.Shared": "2 tables",
"tables.OpenVibe.Shared": "2 tables",
"tables.OpenVibe.Shared.target:OpenVibe.Shared": "2 Shared tables target OpenVibe.Shared",
"tables.OpenVibe.Shared.target:OpenVibe.Shared": "2 Shared tables target OpenVibe.Shared",
- "tests.OpenVibe.Media": "67 test files",
+ "tests.OpenVibe.Media": "68 test files",
"tables.OpenVibe.Media": "34 tables",
"tables.OpenVibe.Media": "34 tables",
"tables.OpenVibe.Media.target:OpenVibe.Media": "32 Media tables target OpenVibe.Media",
"tables.OpenVibe.Media.target:OpenVibe.Media": "32 Media tables target OpenVibe.Media",
"tables.OpenVibe.Media.target:OpenVibe.Community": "3 Media tables target OpenVibe.Community",
"tables.OpenVibe.Media.target:OpenVibe.Community": "3 Media tables target OpenVibe.Community",
@@ -64557,11 +64462,11 @@
@@ -64557,11 +64462,11 @@
"metrics": [
"metrics": [
{
{
"key": "shared.pins",
"key": "shared.pins",
- "value": "25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0"
+ "value": "25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0"
},
},
{
{
"key": "shared.drift",
"key": "shared.drift",
- "value": "31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0)"
+ "value": "11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0)"
}
}
],
],
"members": [
"members": [
@@ -64611,7 +64516,7 @@
@@ -64611,7 +64516,7 @@
"metrics": [
"metrics": [
{
{
"key": "deploy.drift",
"key": "deploy.drift",
- "value": "24 service(s) not running origin/main"
+ "value": "1 service(s) behind origin/main in what runs, 4 more only in documentation and tests"
}
}
],
],
"members": [
"members": [
@@ -64829,7 +64734,7 @@
@@ -64829,7 +64734,7 @@
"status": "open",
"status": "open",
"check": "deploy-drift",
"check": "deploy-drift",
"ownerReview": false,
"ownerReview": false,
- "checkResult": "ai: deployed 549bed0 is 1 commit(s) behind origin/main 6c8b833; only documentation and tests changed (README.md, STATUS.json); billing: deployed 80f97aa is 1 commit(s) behind origin/main f24684b; only documentation and tests changed (README.md, STATUS.json); blog: deployed 21d537c is 1 commit(s) behind origin/main 8a7f8eb; only documentation and tests changed (README.md, STATUS.json); chat: deployed 3aab730 is 1 commit(s) behind origin/main d87c8d3; only documentation and tests changed (README.md, STATUS.json); community: deployed 52d923a is 1 commit(s) behind origin/main 2da3501; only documentation and tests changed (README.md, STATUS.json); coupons: deployed 64835d2 is 1 commit(s) behind origin/main b91cd79; only documentation and tests changed (README.md, STATUS.json); deals: deployed fa0582d is 1 commit(s) behind origin/main 533450f; only documentation and tests changed (README.md, STATUS.json); events: deployed f55f7eb is 1 commit(s) behind origin/main 19919ec; only documentation and tests changed (README.md, STATUS.json); games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); host: deployed 2b63389 is 2 commit(s) behind origin/main 6d2aaaa; only documentation and tests changed (README.md, STATUS.json, docs/deploy-strategies.md); live: deployed b0cc2ef is 1 commit(s) behind origin/main 03f49b7; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); media: deployed 6248363 is 1 commit(s) behind origin/main 14cac06; only documentation and tests changed (README.md, STATUS.json); network: deployed ddd87b6 is 2 commit(s) behind origin/main c022f86; only documentation and tests changed (README.md, STATUS.json, docs/roadmap-baseline/01-services.md and 17 more); news: deployed 8ab47a6 is 1 commit(s) behind origin/main 97dae43; only documentation and tests changed (README.md, STATUS.json); openre: deployed cf423e3 is 1 commit(s) behind origin/main c77ec2a; only documentation and tests changed (README.md, STATUS.json); reviews: deployed 1cff36b is 1 commit(s) behind origin/main c87b344; only documentation and tests changed (README.md, STATUS.json); search: deployed 8ed7667 is 1 commit(s) behind origin/main e8511d8; only documentation and tests changed (README.md, STATUS.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); sources: deployed 351383e is 1 commit(s) behind origin/main 1670853; only documentation and tests changed (README.md, STATUS.json); tips: deployed 1e6bfbb is 1 commit(s) behind origin/main 13986b5; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 1 commit(s) behind origin/main 4f4ed6e; only documentation and tests changed (README.md, STATUS.json); trade: deployed 4658447 is 1 commit(s) behind origin/main 273bce7; only documentation and tests changed (README.md, STATUS.json); vip: deployed 0fbcbb5 is 1 commit(s) behind origin/main 95b3e19; only documentation and tests changed (README.md, STATUS.json); wiki: deployed 32a26ef is 1 commit(s) behind origin/main 3302540; only documentation and tests changed (README.md, STATUS.json)"
+ "checkResult": "network: deployed ac71bb4 is 1 commit(s) behind origin/main 2c1dacb; games: deployed 51d8688 is 1 commit(s) behind origin/main eb2d008; only documentation and tests changed (README.md, STATUS.json); live: deployed 278cd40 is 1 commit(s) behind origin/main 7fd7bea; only documentation and tests changed (test/fixtures/n-1/client.json, test/fixtures/n-1/worker.json); sites: deployed 32464ec is 1 commit(s) behind origin/main 304e8b1; only documentation and tests changed (README.md, STATUS.json); tools: deployed e55469f is 2 commit(s) behind origin/main 9339e15; only documentation and tests changed (README.md, STATUS.json, apps/audio/test/hardening.test.js and 3 more)"
},
},
{
{
"id": "H14",
"id": "H14",
@@ -64843,7 +64748,7 @@
@@ -64843,7 +64748,7 @@
"status": "open",
"status": "open",
"check": "dead-dbs",
"check": "dead-dbs",
"ownerReview": "Approve deleting the zero-table files and moving or deleting the import snapshots and backups listed by the check.",
"ownerReview": "Approve deleting the zero-table files and moving or deleting the import snapshots and backups listed by the check.",
- "checkResult": "blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db"
+ "checkResult": "blog/data/blog.db, community/data/community.db, games/data/legacy-import/world-before-20260923T184930Z.db, live/shared/data/analytics.db, live/shared/data/backups/analytics-pre-adr021-2026-09-23.db, live/shared/data/backups/live-20260926-072748.db, live/shared/data/backups/live-20260926-095352.db, live/shared/data/backups/live-pre-643a2e6.db, live/shared/data/backups/live-pre-identity-contract-20260928-001702Z.db, live/shared/data/hobo.db, live/shared/data/live-before-rs-slots-20260924T0153Z.db, live/shared/data/live.db, live/shared/data/openvibe.db, live/shared/data/rs-companion.db, media/data/backups/owner-subject-20260923.media.db, media/data/reports/h15-repair-applied-20260925.media.db, media/data/reports/h15-resize-applied-20260928.media.db, network/data/backups/network-pre-creator-analytics-20260926.db, network/data/backups/network-pre-follows-20260926.db, network/data/network-pre-refresh-hash-2026-09-24.db, network/data/network-pre-secrets-2026-09-24.db, tips/data/tips.db, tools/apps/audio/data/guard.db, tools/apps/docs/data/guard.db, tools/apps/food/data/guard.db, tools/apps/gateway/data/guard.db, tools/apps/gateway/data/token-revocations.db, tools/apps/img/data/guard.db, tools/apps/maps/data/guard.db, tools/apps/text/data/guard.db, tools/apps/yt/data/guard.db, tools/backups/analytics-2026-09-23/audio.analytics.db, tools/backups/analytics-2026-09-23/docs.analytics.db, tools/backups/analytics-2026-09-23/food.analytics.db, tools/backups/analytics-2026-09-23/img.analytics.db, tools/backups/analytics-2026-09-23/maps.analytics.db, tools/backups/analytics-2026-09-23/text.analytics.db, tools/backups/analytics-2026-09-23/yt.analytics.db, billing/live-snapshot-202609230121.db, chat/live-snap-a.db, chat/live-snap-b.db, chat/live-snapshot-0159.db, chat/rehearsal.db, community/community.pre-c24-20260925T185117Z.db, community/community.pre-c24b-20260925T185400Z.db, community/community.pre-c24c-20260925T185425Z.db, community/community.pre-live-comments-20260923T191345Z.db"
},
},
{
{
"id": "H15",
"id": "H15",
@@ -64932,7 +64837,7 @@
@@ -64932,7 +64837,7 @@
"id": "EC5",
"id": "EC5",
"text": "Unknowns are marked unknown, not guessed",
"text": "Unknowns are marked unknown, not guessed",
"pass": true,
"pass": true,
- "detail": "2 unknown items recorded"
+ "detail": "2 unknown items recorded; 0 things this run could not observe, each marked unknown"
},
},
{
{
"id": "EC6",
"id": "EC6",
@@ -2,37 +2,37 @@
@@ -2,37 +2,37 @@
"_about": "Generated from data/requirement-ledger.json by scripts/roadmap-baseline/generate.js. Umbrella-level ledger (roadmap §22.4/§25): one row per D01-D46 requirement, every artifact re-verified against the scanned origin/main checkouts and prod-snapshot.json. Do not edit; edit the data file and regenerate.",
"_about": "Generated from data/requirement-ledger.json by scripts/roadmap-baseline/generate.js. Umbrella-level ledger (roadmap §22.4/§25): one row per D01-D46 requirement, every artifact re-verified against the scanned origin/main checkouts and prod-snapshot.json. Do not edit; edit the data file and regenerate.",
"asOf": "2026-09-23T20:30Z",
"asOf": "2026-09-23T20:30Z",
"generatedFrom": {
"generatedFrom": {
- "OpenVibe.Live": "03f49b7716b7cee1cce8a44e7155aeb96a67d004",
- "OpenVibe.Network": "c022f86236f3e8251c924fae6c98494658b795a4",
- "OpenVibe.Shared": "b5a9bd77171fcf75f42ff33fe86b7ad06baac1c8",
- "OpenVibe.Media": "14cac06886649848c332cfa564aa6b3594ea09bc",
- "OpenVibe.Tools": "4f4ed6e8f3f3c8e1a83dd644dd3c0659a7bccce4",
- "OpenVibe.Community": "2da3501e28457fa4978c0bc4a1b3bfc9188b77b9",
+ "OpenVibe.Live": "7fd7bea040f590b2e0720010bdd9c86c7d7420ea",
+ "OpenVibe.Network": "2c1dacbe5fb7c92afccde6448e4e39a7bd06c5c3",
+ "OpenVibe.Shared": "919c10811cc3a4dc62fda32228f5d82a7aef1045",
+ "OpenVibe.Media": "47b21bde0b4863344fafbb90109922fbf8757687",
+ "OpenVibe.Tools": "9339e1500139b229e2e2f59ed7cba336dced8897",
+ "OpenVibe.Community": "581d80535f4bd1081afeb7a564392d4e1e5eb000",
"OpenVibe.Games": "eb2d00880d3231b2c68cb1753b4542044edef1e5",
"OpenVibe.Games": "eb2d00880d3231b2c68cb1753b4542044edef1e5",
"OpenVibe.Sites": "304e8b12b535f4b562f23027ae84f1a5d515cc6c",
"OpenVibe.Sites": "304e8b12b535f4b562f23027ae84f1a5d515cc6c",
- "OpenVibe.Events": "19919ece79707eed051c3f18ab37b7fdb6d939a6",
- "OpenVibe.Chat": "d87c8d3c906ad52ef8bf123ce60373fdefcf09e6",
- "OpenRe.Stream": "c77ec2a9a1e350fb4ae1c646ec74693fae4f2fa3",
- "OpenVibe.Billing": "f24684bb84ec1670bd08670891e6742fa433a548",
- "OpenVibe.Tips": "13986b59e697d12a328a4f12e993295445ca40be",
- "OpenVibe.VIP": "95b3e196daa152c2e7f8e940a1f02b7fe32706ba",
- "OpenVibe.AI": "6c8b8338be936cbd3a6f50dee3f790807f145a0e",
- "OpenVibe.Search": "e8511d849720534a9ffcd54b052663111e5b1e6f",
- "OpenVibe.Sources": "167085388a637eed3f0d47b3c6eabb8c9d00814d",
- "OpenVibe.Wiki": "3302540e8b5fdf3c07db9fce688be2f4ab8b847b",
- "OpenVibe.Blog": "8a7f8ebe862b0e1c0bb119ee96c42f38fc0e5321",
- "OpenVibe.News": "97dae43a2d41c5528bbb4c93ff2ea7ea456203dd",
- "OpenVibe.Reviews": "c87b34440b0d50bc2cdf6c136775002ed9080c1e",
- "OpenVibe.Deals": "533450f9cc4a358ba50f353f06826ec3611b4ddc",
- "OpenVibe.Coupons": "b91cd795e8ee4a3e49317a6e3cb000fa92da9325",
- "OpenVibe.Trade": "273bce7b1b8771037bc2a660fa8784dc1aa049a7",
- "OpenVibe.Codes": "64d8feb1ac841c01f93e197b6a20eb07a09ef428",
- "OpenVibe.Host": "6d2aaaa630e29d2bfd261a7f75cbbbaa2b8c1d46",
- "OpenVibe.Examples": "92eb7c3b0f50fea9f76086ed3eeda3664de93494"
+ "OpenVibe.Events": "7c575cd8ba545dfb7c4c53667dac7a71f77ac309",
+ "OpenVibe.Chat": "4c517a59ead3c9e71139b6d4954de8306a4d83ba",
+ "OpenRe.Stream": "d9f42407f66648c547c32989ecf862b0bc949b63",
+ "OpenVibe.Billing": "1f9df5681486992d3fa8f076ff11f22aea5f0b25",
+ "OpenVibe.Tips": "3cc8c8354183008026e38a99db9ef96014663467",
+ "OpenVibe.VIP": "63f46fa5a5ff7ccda8acb0a63ff0f64db5f7805b",
+ "OpenVibe.AI": "f6fdbc9cbc3c87d684046940e49dd5ddffd5c79b",
+ "OpenVibe.Search": "04f9fd45c3c10b401704da2994700c14290b5051",
+ "OpenVibe.Sources": "6e1185e5c315ff3f5676b86dd3dfe6761ef82e32",
+ "OpenVibe.Wiki": "a81573f9ad37722a4d4ffc5bce36565d7d8e5096",
+ "OpenVibe.Blog": "9f339e3c27abfa4445a7d52cc6c1153c4a88b5ec",
+ "OpenVibe.News": "cb6d79e2a6d9c7c07ca76eb7bdb14d41c81b7278",
+ "OpenVibe.Reviews": "8416fcb1f0f2b1969a1261fe4ee5bf6aa3600cd2",
+ "OpenVibe.Deals": "0bf25e2e5a50e0dca1887d3545be2c95c3cd2749",
+ "OpenVibe.Coupons": "168262d1baa81ab1973863d66d52ab213711ef81",
+ "OpenVibe.Trade": "d515e46f7f32a6265a8e7feab49e97b9811094ed",
+ "OpenVibe.Codes": "1246445c4abaddcacf4d04adf172d601700833e3",
+ "OpenVibe.Host": "02c68f694a28f06e3056a05055f4515b3d4e7c64",
+ "OpenVibe.Examples": "058c71a5ddee4103a314ff211c5c869f9478a23f"
},
},
"prodSnapshot": {
"prodSnapshot": {
"host": "openvibe-oregon",
"host": "openvibe-oregon",
- "collectedAt": "2026-09-28T03:31:00.238Z"
+ "collectedAt": "2026-09-28T05:20:11.716Z"
},
},
"statuses": {
"statuses": {
"met": "the §15.0 required target is demonstrated by current evidence: a test that exercises it, and production evidence where the target is a production authority or state.",
"met": "the §15.0 required target is demonstrated by current evidence: a test that exercises it, and production evidence where the target is a production authority or state.",
@@ -404,11 +404,11 @@
@@ -404,11 +404,11 @@
"metrics": [
"metrics": [
{
{
"key": "shared.pins",
"key": "shared.pins",
- "value": "25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0"
+ "value": "25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0"
},
},
{
{
"key": "shared.drift",
"key": "shared.drift",
- "value": "31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0)"
+ "value": "11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0)"
}
}
]
]
},
},
@@ -449,7 +449,7 @@
@@ -449,7 +449,7 @@
"metrics": [
"metrics": [
{
{
"key": "deploy.drift",
"key": "deploy.drift",
- "value": "24 service(s) not running origin/main"
+ "value": "1 service(s) behind origin/main in what runs, 4 more only in documentation and tests"
}
}
]
]
},
},
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
> Generated by `scripts/roadmap-baseline/generate.js`. Do not edit by hand; edit `data/*.json` or the extractor and regenerate.
> Generated by `scripts/roadmap-baseline/generate.js`. Do not edit by hand; edit `data/*.json` or the extractor and regenerate.
-Roadmap §22.4 and §25: every D01-D46 requirement linked to the acceptance artifact that proves it. As of 2026-09-23T20:30Z; repositories scanned at origin/main (README), production snapshot 2026-09-28 03:31 UTC.
+Roadmap §22.4 and §25: every D01-D46 requirement linked to the acceptance artifact that proves it. As of 2026-09-23T20:30Z; repositories scanned at origin/main (README), production snapshot 2026-09-28 05:20 UTC.
This is the umbrella layer. §25.2 also asks for an atomic, source-level ledger (`docs/implementation/requirements-ledger.yaml`, one entry per field, route family, event, capability, journey and failure state); that ledger does not exist yet, and no row here may be read as closing the requirements beneath it.
This is the umbrella layer. §25.2 also asks for an atomic, source-level ledger (`docs/implementation/requirements-ledger.yaml`, one entry per field, route family, event, capability, journey and failure state); that ledger does not exist yet, and no row here may be read as closing the requirements beneath it.
@@ -1074,7 +1074,7 @@ Blocked on the owner: Open 1936/tcp at the host firewall and at the provider edg
@@ -1074,7 +1074,7 @@ Blocked on the owner: Open 1936/tcp at the host firewall and at the provider edg
### D42 Shared component architecture: partial
### D42 Shared component architecture: partial
-Roadmap §3.2 (W0, 2026-09-22): partial. Waves: W2, Track R. Measured this run: 25 repos pin a tagged openvibe-shared release (latest v1.23.1): OpenRe.Stream v1.22.0, AI v1.22.0, Billing v1.22.0, Blog v1.22.0, Chat v1.22.0, Codes v1.22.0, Community v1.22.0, Coupons v1.22.0, Deals v1.22.0, Events v1.22.0, Games v1.23.0, Host v1.22.0, Live v1.23.1, Media v1.22.0, Network v1.22.0, News v1.22.0, Reviews v1.22.0, Search v1.22.0, Sites v1.23.0, Sources v1.22.0, Tips v1.22.0, Tools v1.23.0, Trade v1.22.0, VIP v1.22.0, Wiki v1.22.0; 31 manifests unpinned or behind: OpenRe.Stream (v1.22.0), AI (v1.22.0), Billing (v1.22.0), Blog (v1.22.0), Chat (v1.22.0), Codes (v1.22.0), Community (v1.22.0), Coupons (v1.22.0), Deals (v1.22.0), Events (v1.22.0), Games/apps/server (v1.23.0), Host (v1.22.0), Media (v1.22.0), Network (v1.22.0), News (v1.22.0), Reviews (v1.22.0), Search (v1.22.0), Sites (v1.23.0), Sources (v1.22.0), Tips (v1.22.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0), Trade (v1.22.0), VIP (v1.22.0), Wiki (v1.22.0).
+Roadmap §3.2 (W0, 2026-09-22): partial. Waves: W2, Track R. Measured this run: 25 repos pin a tagged openvibe-shared release (latest v1.25.0): OpenRe.Stream v1.25.0, AI v1.25.0, Billing v1.25.0, Blog v1.25.0, Chat v1.25.0, Codes v1.25.0, Community v1.25.0, Coupons v1.25.0, Deals v1.25.0, Events v1.25.0, Games v1.23.0, Host v1.25.0, Live v1.25.0, Media v1.25.0, Network v1.24.0, News v1.25.0, Reviews v1.25.0, Search v1.25.0, Sites v1.23.0, Sources v1.25.0, Tips v1.25.0, Tools v1.23.0, Trade v1.25.0, VIP v1.25.0, Wiki v1.25.0; 11 manifests unpinned or behind: Games/apps/server (v1.23.0), Network (v1.24.0), Sites (v1.23.0), Tools/apps/audio (v1.23.0), Tools/apps/docs (v1.23.0), Tools/apps/food (v1.23.0), Tools/apps/gateway (v1.23.0), Tools/apps/img (v1.23.0), Tools/apps/maps (v1.23.0), Tools/apps/text (v1.23.0), Tools/apps/yt (v1.23.0).
#### D42
#### D42
@@ -1155,7 +1155,7 @@ Remaining:
@@ -1155,7 +1155,7 @@ Remaining:
### D45 Release compatibility and recovery: partial
### D45 Release compatibility and recovery: partial
-Roadmap §3.2 (W0, 2026-09-22): absent. Waves: Track R, W22. Measured this run: 24 service(s) not running origin/main.
+Roadmap §3.2 (W0, 2026-09-22): absent. Waves: Track R, W22. Measured this run: 1 service(s) behind origin/main in what runs, 4 more only in documentation and tests.
#### D45
#### D45