openvibers/openvibe.network Commits
Wave 0 baseline: regenerate after the Wave 1 identity deploy (identity_legacy_map, Contracts alpha)
Changes
@@@ -8,8 +8,8 @@ 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 | 71be248 | 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 | e31e342 | data/live.db, data/analytics.db, data/rs-companion.db |++| network | OpenVibe.Network | live | http 4000 | openvibe-network.service | /etc/openvibe/network.env | 9b4e262 | 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 | 24151bd | data/live.db, data/analytics.db, data/rs-companion.db || media | OpenVibe.Media | partial | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 6114bc6 | 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 | 0346edc | apps/<satellite>/data/analytics.db || games | OpenVibe.Games | live | http 8000 | openvibe-games.service | /etc/openvibe/games.env | 43c11f0 | data/world.db |@@@ -20,8 +20,8 @@ Deliverable 1: runtimes, ports, units, env files and repository state.| Repo | HEAD | origin/main | Source files | LOC | Test files | CI | Routes | Tables | WS servers | Timers/jobs | TODO(contract) ||---|---|---|---|---|---|---|---|---|---|---|---|--| OpenVibe.Live | e31e342 | e31e342 | 164 | 69622 | 55 | no | 532 | 125 | 8 | 48 | 15 |--| OpenVibe.Network | 71be248 | 71be248 | 77 | 20399 | 17 | no | 185 | 35 | 0 | 11 | 0 |++| OpenVibe.Live | 24151bd | 24151bd | 165 | 69699 | 56 | no | 532 | 125 | 8 | 48 | 15 |++| OpenVibe.Network | 9b4e262 | 9b4e262 | 79 | 20646 | 18 | no | 187 | 36 | 0 | 11 | 0 || OpenVibe.Media | 6114bc6 | 6114bc6 | 28 | 8702 | 4 | no | 67 | 15 | 0 | 9 | 0 || OpenVibe.Tools | 0346edc | 0346edc | 117 | 20018 | 2 | no | 99 | 4 | 0 | 12 | 0 || OpenVibe.Community | de947ea | de947ea | 11 | 1754 | 8 | no | 22 | 4 | 0 | 0 | 0 |@@@ -44,16 +44,16 @@ LOC counts non-test source files in the scanned directories only (`server/`, `ap| OpenVibe.Chat | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. || OpenVibe.Codes | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. || OpenVibe.Community | PUBLIC | - | 2026-09-21 | 687 KB | |--| OpenVibe.Contracts | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Machine-readable contracts for the whole OpenVibe network. |++| OpenVibe.Contracts | PUBLIC | alpha | 2026-09-22 | 13 KB | Machine-readable contracts for the whole OpenVibe network. || OpenVibe.Coupons | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. || OpenVibe.Deals | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. || OpenVibe.Events | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. || OpenVibe.Examples | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Executable public integration examples, tested in CI against the platform. || OpenVibe.Games | PUBLIC | - | 2026-09-21 | 4675 KB | || OpenVibe.Host | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |--| OpenVibe.Live | PUBLIC | - | 2026-09-21 | 6455 KB | |++| OpenVibe.Live | PUBLIC | - | 2026-09-22 | 6455 KB | || OpenVibe.Media | PUBLIC | - | 2026-09-21 | 847 KB | |--| OpenVibe.Network | PUBLIC | - | 2026-09-21 | 1037 KB | |++| OpenVibe.Network | PUBLIC | - | 2026-09-22 | 1037 KB | || OpenVibe.News | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. || OpenVibe.Realtime | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Browser delivery plane for events: authorised WS/SSE topics with cursors, resume and presence. || OpenVibe.Reviews | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |@@@ -16,7 +16,7 @@ Deliverable 2: every table declared in code or present in production, with curre| /opt/openvibe.live/data/live.db | 279.2 MB | 146 || /opt/openvibe.live/data/rs-companion.db | 8.6 MB | 33 || /opt/openvibe.media/data/media.db | 5.6 MB | 11 |--| /opt/openvibe.network/data/network.db | 766.5 MB | 34 |++| /opt/openvibe.network/data/network.db | 766.5 MB | 35 || /opt/openvibe.tools/apps/audio/data/analytics.db | 59.9 MB | 4 || /opt/openvibe.tools/apps/img/data/analytics.db | 5.5 MB | 4 || /opt/openvibe.tools/apps/docs/data/analytics.db | 1.5 MB | 4 |@@@ -30,23 +30,23 @@ Deliverable 2: every table declared in code or present in production, with curre| Table | Declared at | In prod | Target owner | Disposition | Wave ||---|---|---|---|---|---|| active_effects | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| ai_chatbot_configs | server/db/database.js:1803 | live.db | OpenVibe.AI | extract | W13 |++| ai_chatbot_configs | server/db/database.js:1807 | live.db | OpenVibe.AI | extract | W13 || ai_conversations | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || ai_memory | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| ai_timeline_cache | server/db/database.js:1296 | live.db | OpenVibe.AI | extract | W13 |--| ai_usage | server/db/database.js:1254 | live.db | OpenVibe.AI | extract | W13 |--| ai_viewer_log | server/db/database.js:1887 | live.db | OpenVibe.AI | extract | W13 |--| ai_viewer_threads | server/db/database.js:1873 | live.db | OpenVibe.AI | extract | W13 |++| ai_timeline_cache | server/db/database.js:1300 | live.db | OpenVibe.AI | extract | W13 |++| ai_usage | server/db/database.js:1258 | live.db | OpenVibe.AI | extract | W13 |++| ai_viewer_log | server/db/database.js:1891 | live.db | OpenVibe.AI | extract | W13 |++| ai_viewer_threads | server/db/database.js:1877 | live.db | OpenVibe.AI | extract | W13 || analytics_daily | vendor/openvibe-shared/analytics.js:116 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 || analytics_events | vendor/openvibe-shared/analytics.js:74 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 || analytics_hourly | vendor/openvibe-shared/analytics.js:98 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 || analytics_rate_tracking | vendor/openvibe-shared/analytics.js:137 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 || analytics_snapshots | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| anon_ip_mappings | server/db/database.js:936 | live.db | OpenVibe.Network (policy) | extract | W1 |++| anon_ip_mappings | server/db/database.js:940 | live.db | OpenVibe.Network (policy) | extract | W1 || api_keys | server/db/schema.sql:391 | live.db | OpenVibe.Network (principals) / OpenVibe.Codes | extract | W1/W20 || api_tokens | server/db/schema.sql:404 | live.db | OpenVibe.Network (principals) / OpenVibe.Codes | extract | W1/W20 |--| app_state | server/db/database.js:1167 | live.db | OpenVibe.Live | keep | - |--| approved_ips | server/db/database.js:2075 | live.db | OpenVibe.Network (policy) | extract | W1 |++| app_state | server/db/database.js:1171 | live.db | OpenVibe.Live | keep | - |++| approved_ips | server/db/database.js:2079 | live.db | OpenVibe.Network (policy) | extract | W1 || arena_achievements | (prod only) | live.db | archive then drop | investigate | W0 || arena_battles | (prod only) | live.db | archive then drop | investigate | W0 || arena_beef_hype | server/arena/beef.js:58 | live.db | OpenVibe.Live | keep | - |@@@ -87,19 +87,19 @@ Deliverable 2: every table declared in code or present in production, with curre| canvas_tiles | (prod only) | live.db | OpenVibe.Games | frozen-legacy | W12 || canvas_user_overrides | (prod only) | live.db | OpenVibe.Games | frozen-legacy | W12 || changelog_entries | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| channel_ai_bots | server/db/database.js:1828 | live.db | OpenVibe.AI | extract | W13 |--| channel_ai_config | server/db/database.js:1852 | live.db | OpenVibe.AI | extract | W13 |--| channel_moderation_settings | server/db/database.js:1638, server/db/schema.sql:514 | live.db | OpenVibe.Chat | extract | W6 |--| channel_moderators | server/db/database.js:1621, server/db/schema.sql:499 | live.db | OpenVibe.Chat | extract | W6 |--| channel_points | server/db/database.js:760 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |--| channel_sounds | server/db/database.js:1741, server/db/schema.sql:625 | live.db | OpenVibe.Chat | extract | W6 |--| channel_sounds_new | server/db/database.js:1765 | no | OpenVibe.Chat | extract | W6 |++| channel_ai_bots | server/db/database.js:1832 | live.db | OpenVibe.AI | extract | W13 |++| channel_ai_config | server/db/database.js:1856 | live.db | OpenVibe.AI | extract | W13 |++| channel_moderation_settings | server/db/database.js:1642, server/db/schema.sql:514 | live.db | OpenVibe.Chat | extract | W6 |++| channel_moderators | server/db/database.js:1625, server/db/schema.sql:499 | live.db | OpenVibe.Chat | extract | W6 |++| channel_points | server/db/database.js:764 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |++| channel_sounds | server/db/database.js:1745, server/db/schema.sql:625 | live.db | OpenVibe.Chat | extract | W6 |++| channel_sounds_new | server/db/database.js:1769 | no | OpenVibe.Chat | extract | W6 || channels | server/db/schema.sql:26 | live.db | OpenVibe.Live | keep | - |--| chat_ai_summaries | server/db/database.js:1308 | live.db | OpenVibe.Chat | extract | W6 |++| chat_ai_summaries | server/db/database.js:1312 | live.db | OpenVibe.Chat | extract | W6 || chat_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || chat_messages | server/db/schema.sql:148 | live.db | OpenVibe.Chat | extract | W6 |--| chat_messages_new | server/db/database.js:415 | no | OpenVibe.Chat | extract | W6 |--| chat_timeline_events | server/db/database.js:1328 | live.db | OpenVibe.Chat | extract | W6 |++| chat_messages_new | server/db/database.js:419 | no | OpenVibe.Chat | extract | W6 |++| chat_timeline_events | server/db/database.js:1332 | live.db | OpenVibe.Chat | extract | W6 || chatter_profiles | (prod only) | live.db | archive then drop | investigate | W0 || chatter_subjects | (prod only) | live.db | archive then drop | investigate | W0 || chatter_xp_log | (prod only) | live.db | archive then drop | investigate | W0 |@@@ -108,11 +108,11 @@ Deliverable 2: every table declared in code or present in production, with curre| coin_redemptions | server/db/schema.sql:689 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) || coin_rewards | server/db/schema.sql:668 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) || coin_transactions | server/db/schema.sql:651 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |--| comments | server/db/database.js:849, server/db/schema.sql:585 | live.db | OpenVibe.Community | extract | W5 |++| comments | server/db/database.js:853, server/db/schema.sql:585 | live.db | OpenVibe.Community | extract | W5 || content_views | server/db/schema.sql:328 | live.db | OpenVibe.Live | keep | - |--| control_config_buttons | server/db/database.js:2306 | live.db | OpenRe.Stream | extract | W7 |--| control_configs | server/db/database.js:2292 | live.db | OpenRe.Stream | extract | W7 |--| control_whitelist | server/db/database.js:2277 | live.db | OpenRe.Stream | extract | W7 |++| control_config_buttons | server/db/database.js:2310 | live.db | OpenRe.Stream | extract | W7 |++| control_configs | server/db/database.js:2296 | live.db | OpenRe.Stream | extract | W7 |++| control_whitelist | server/db/database.js:2281 | live.db | OpenRe.Stream | extract | W7 || custom_rewards | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || daily_claims | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || divorce_history | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |@@@ -122,9 +122,9 @@ Deliverable 2: every table declared in code or present in production, with curre| dm_participants | server/chat/dm.js:31 | live.db | OpenVibe.Chat | extract | W6 || donation_goals | server/db/schema.sql:264 | live.db | OpenVibe.Tips | extract | W9 || dungeon_stats | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| easter_egg_solves | server/db/database.js:1340 | live.db | OpenVibe.AI | extract | W13 |++| easter_egg_solves | server/db/database.js:1344 | live.db | OpenVibe.AI | extract | W13 || emotes | server/db/schema.sql:603 | live.db | OpenVibe.Chat | extract | W6 |--| emotes_new | server/db/database.js:1709 | no | OpenVibe.Chat | extract | W6 |++| emotes_new | server/db/database.js:1713 | no | OpenVibe.Chat | extract | W6 || event_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || farm_plots | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || file_checksums | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |@@@ -146,55 +146,55 @@ Deliverable 2: every table declared in code or present in production, with curre| game_structures | server/game/schema.sql:87 | live.db | OpenVibe.Games | migrate-then-drop | W12 || game_world_state | server/game/schema.sql:7 | live.db | OpenVibe.Games | migrate-then-drop | W12 || gusher_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| hidden_relay_users | server/db/database.js:2112 | live.db | OpenVibe.Chat | extract | W6 |++| hidden_relay_users | server/db/database.js:2116 | live.db | OpenVibe.Chat | extract | W6 || inventory | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| ip_log | server/db/database.js:2051 | live.db | OpenVibe.Network (policy) | extract | W1 |++| ip_log | server/db/database.js:2055 | live.db | OpenVibe.Network (policy) | extract | W1 || jo_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| kick_channel_cache | server/db/database.js:774 | live.db | OpenRe.Stream | extract | W7 |++| kick_channel_cache | server/db/database.js:778 | live.db | OpenRe.Stream | extract | W7 || linked_accounts | server/db/database.js:384 | live.db | OpenVibe.Network | extract | W1 || love_affinity | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || love_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || love_proposals | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| managed_streams | server/db/database.js:2420, server/db/schema.sql:78 | live.db | OpenRe.Stream | extract | W7 |--| media_request_settings | server/db/database.js:869, server/db/schema.sql:722 | live.db | OpenVibe.Chat | extract | W6 |--| media_requests | server/db/database.js:883, server/db/schema.sql:739 | live.db, rs-companion.db | OpenVibe.Chat | extract | W6 |++| managed_streams | server/db/database.js:2424, server/db/schema.sql:78 | live.db | OpenRe.Stream | extract | W7 |++| media_request_settings | server/db/database.js:873, server/db/schema.sql:722 | live.db | OpenVibe.Chat | extract | W6 |++| media_requests | server/db/database.js:887, server/db/schema.sql:739 | live.db, rs-companion.db | OpenVibe.Chat | extract | W6 || mine_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || mod_persuasion | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| moderation_actions | server/db/database.js:1920 | live.db | OpenVibe.Chat | extract | W6 |++| moderation_actions | server/db/database.js:1924 | live.db | OpenVibe.Chat | extract | W6 || music_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || news_settings | server/news/news-service.js:47 | live.db | OpenVibe.Live | keep | - |--| paste_comments | server/db/database.js:2008 | live.db | OpenVibe.Community | frozen-legacy | W5 |--| paste_likes | server/db/database.js:1976 | live.db | OpenVibe.Community | frozen-legacy | W5 |--| pastes | server/db/database.js:1939 | live.db | OpenVibe.Community | frozen-legacy | W5 |--| payment_orders | server/db/database.js:1588 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |--| pending_ip_messages | server/db/database.js:2092 | live.db | OpenVibe.Chat | extract | W6 |--| platform_connections | server/db/database.js:709 | live.db | OpenRe.Stream | extract | W7 |--| powerchat_connections | server/db/database.js:731 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |--| powerchat_webhook_deliveries | server/db/database.js:748 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |++| paste_comments | server/db/database.js:2012 | live.db | OpenVibe.Community | frozen-legacy | W5 |++| paste_likes | server/db/database.js:1980 | live.db | OpenVibe.Community | frozen-legacy | W5 |++| pastes | server/db/database.js:1943 | live.db | OpenVibe.Community | frozen-legacy | W5 |++| payment_orders | server/db/database.js:1592 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |++| pending_ip_messages | server/db/database.js:2096 | live.db | OpenVibe.Chat | extract | W6 |++| platform_connections | server/db/database.js:713 | live.db | OpenRe.Stream | extract | W7 |++| powerchat_connections | server/db/database.js:735 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |++| powerchat_webhook_deliveries | server/db/database.js:752 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) || promo_claims | (prod only) | live.db | archive then drop | investigate | W0 |--| relay_users | server/db/database.js:1466 | live.db | OpenVibe.Chat | extract | W6 |--| restream_destinations | server/db/database.js:691 | live.db | OpenRe.Stream | extract | W7 |++| relay_users | server/db/database.js:1470 | live.db | OpenVibe.Chat | extract | W6 |++| restream_destinations | server/db/database.js:695 | live.db | OpenRe.Stream | extract | W7 || roast_dossier | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || roast_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--| robotstreamer_integrations | server/db/database.js:605, server/db/schema.sql:58 | live.db | OpenRe.Stream | extract | W7 |--| robotstreamer_integrations_new | server/db/database.js:656 | no | OpenRe.Stream | extract | W7 |++| robotstreamer_integrations | server/db/database.js:609, server/db/schema.sql:58 | live.db | OpenRe.Stream | extract | W7 |++| robotstreamer_integrations_new | server/db/database.js:660 | no | OpenRe.Stream | extract | W7 || schema_migrations | server/db/migrations.js:27 | live.db | OpenVibe.Live | keep | - || site_settings | server/db/database.js:353, server/db/schema.sql:556 | live.db | OpenVibe.Live | keep | - || stream_analytics | server/db/schema.sql:810 | live.db | OpenVibe.Live | keep | - || stream_controls | server/db/schema.sql:372 | live.db | OpenRe.Stream | extract | W7 |--| stream_controls_new | server/db/database.js:2385 | no | OpenRe.Stream | extract | W7 |--| stream_first_chats | server/db/database.js:2040 | live.db | OpenVibe.Chat | extract | W6 |--| stream_memories | server/db/database.js:1181 | live.db | OpenVibe.AI | extract | W13 |++| stream_controls_new | server/db/database.js:2389 | no | OpenRe.Stream | extract | W7 |++| stream_first_chats | server/db/database.js:2044 | live.db | OpenVibe.Chat | extract | W6 |++| stream_memories | server/db/database.js:1185 | live.db | OpenVibe.AI | extract | W13 || stream_recaps | server/recap/recap.js:27 | live.db | OpenVibe.AI | extract | W13 |--| stream_timeline_events | server/db/database.js:1229 | live.db | OpenVibe.Live | keep | - |--| streamer_overviews | server/db/database.js:1274 | live.db | OpenVibe.AI | extract | W13 |++| stream_timeline_events | server/db/database.js:1233 | live.db | OpenVibe.Live | keep | - |++| streamer_overviews | server/db/database.js:1278 | live.db | OpenVibe.AI | extract | W13 || streams | server/db/schema.sql:103 | live.db | OpenVibe.Live | keep | - || subscriptions | server/db/schema.sql:234 | live.db | OpenVibe.Billing + OpenVibe.VIP | extract | W8/W10 || tag_guardian_defeats | server/game/tags.js:81 | live.db | OpenVibe.Live | keep | - || themes | server/db/schema.sql:446 | live.db | OpenVibe.Network | extract | W1 || transactions | server/db/schema.sql:247 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |--| translations | server/db/database.js:506, server/i18n/translate.js:145 | live.db | OpenVibe.AI | extract | W13 |--| tts_voice_overrides | server/db/database.js:1352 | live.db | OpenVibe.Chat | extract | W6 |++| translations | server/db/database.js:510, server/i18n/translate.js:145 | live.db | OpenVibe.AI | extract | W13 |++| tts_voice_overrides | server/db/database.js:1356 | live.db | OpenVibe.Chat | extract | W6 || unlocked_recipes | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || user_cosmetics | server/db/schema.sql:774, server/monetization/cosmetics.js:109 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) || user_equipped | server/db/schema.sql:786, server/monetization/cosmetics.js:118 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |@@@ -206,9 +206,9 @@ Deliverable 2: every table declared in code or present in production, with curre| user_voices | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 || users | server/db/schema.sql:5 | live.db, rs-companion.db | OpenVibe.Network | extract | W1 || verification_keys | server/db/database.js:364, server/db/schema.sql:567 | live.db | OpenVibe.Network | extract | W1 |--| vibe_coding_events | server/db/database.js:2677, server/db/schema.sql:198 | live.db | OpenVibe.Codes | extract | W20 |--| vibe_coding_sessions | server/db/database.js:2642, server/db/schema.sql:170 | live.db | OpenVibe.Codes | extract | W20 |--| viewer_samples | server/db/database.js:3956 | live.db | OpenVibe.Live | keep | - |++| vibe_coding_events | server/db/database.js:2681, server/db/schema.sql:198 | live.db | OpenVibe.Codes | extract | W20 |++| vibe_coding_sessions | server/db/database.js:2646, server/db/schema.sql:170 | live.db | OpenVibe.Codes | extract | W20 |++| viewer_samples | server/db/database.js:3960 | live.db | OpenVibe.Live | keep | - || viewer_snapshots | server/db/schema.sql:799 | live.db | OpenVibe.Live | keep | - || vod_ai_state | server/db/database.js:263 | live.db | OpenVibe.AI | extract | W13 || vods | server/db/schema.sql:280 | live.db | OpenVibe.Media | frozen-legacy | W4 |@@@ -216,7 +216,7 @@ Deliverable 2: every table declared in code or present in production, with curre| watch_time | server/db/schema.sql:706 | live.db | OpenVibe.Live | keep | - || woodcut_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |--## OpenVibe.Network (35)++## OpenVibe.Network (36)| Table | Declared at | In prod | Target owner | Disposition | Wave ||---|---|---|---|---|---|@@@ -232,8 +232,9 @@ Deliverable 2: every table declared in code or present in production, with curre| chrome_hits | server/chrome/service.js:29 | network.db | OpenVibe.Network | keep | W1 (module split) || coin_transactions | server/db/database.js:407 | network.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) || email_delivery_log | server/db/database.js:302 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |--| email_verification_tokens | server/db/database.js:506 | network.db | OpenVibe.Network | keep | W1 (module split) |++| email_verification_tokens | server/db/database.js:509 | network.db | OpenVibe.Network | keep | W1 (module split) || follows | server/db/database.js:386 | network.db | OpenVibe.Network | keep | W1 (module split) |++| identity_legacy_map | server/identity/subjects.js:25 | network.db | OpenVibe.Network | keep | W1 (module split) || ip_log | server/db/database.js:225 | network.db | OpenVibe.Network | keep | W1 (module split) || linked_accounts | server/db/database.js:204 | network.db | OpenVibe.Network | keep | W1 (module split) || notification_preferences | server/db/database.js:290 | network.db | OpenVibe.Network | keep | W1 (module split) |@@@ -244,7 +245,7 @@ Deliverable 2: every table declared in code or present in production, with curre| password_reset_tokens | server/db/database.js:321 | network.db | OpenVibe.Network | keep | W1 (module split) || push_subscriptions | server/db/database.js:460 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) || site_settings | server/db/database.js:238 | network.db | OpenVibe.Network | keep | - |--| stream_live_announcements | server/internal/routes.js:300 | network.db | OpenVibe.Events | extract | W3 |++| stream_live_announcements | server/internal/routes.js:310 | network.db | OpenVibe.Events | extract | W3 || themes | server/db/database.js:183 | network.db | OpenVibe.Network | keep | W1 (module split) || tool_domains | server/domains/routes.js:44 | network.db | OpenVibe.Network | keep | W1 (module split) || url_registry | server/db/database.js:245, server/url-registry.js:7 | network.db | OpenVibe.Network | keep | W1 (module split) |@@@ -9,7 +9,7 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t| Repo | Routes | GET | POST | PUT/PATCH | DELETE | Other | /internal/* ||---|---|---|---|---|---|---|---|| OpenVibe.Live | 532 | 274 | 160 | 50 | 47 | 1 | 6 |--| OpenVibe.Network | 185 | 80 | 69 | 22 | 14 | 0 | 25 |++| OpenVibe.Network | 187 | 81 | 70 | 22 | 14 | 0 | 27 || OpenVibe.Media | 67 | 28 | 27 | 4 | 8 | 0 | 1 || OpenVibe.Tools | 99 | 84 | 12 | 0 | 2 | 1 | 0 || OpenVibe.Community | 22 | 19 | 3 | 0 | 0 | 0 | 0 |@@@ -574,12 +574,12 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t| GET | /api/admin/domains/catalog | server/domains/routes.js:206 || POST | /api/admin/domains/check | server/domains/routes.js:217 || GET | /api/admin/ssh-info | server/index.js:452 |--| GET | /api/auth/anon-identities | server/auth/routes.js:635 |--| POST | /api/auth/anon-session | server/auth/routes.js:512 |--| GET | /api/auth/anon/:token | server/auth/routes.js:582 |--| POST | /api/auth/anon/:token/link | server/auth/routes.js:619 |--| PUT | /api/auth/anon/:token/preferences | server/auth/routes.js:596 |--| POST | /api/auth/change-password | server/auth/routes.js:422 |++| GET | /api/auth/anon-identities | server/auth/routes.js:638 |++| POST | /api/auth/anon-session | server/auth/routes.js:515 |++| GET | /api/auth/anon/:token | server/auth/routes.js:585 |++| POST | /api/auth/anon/:token/link | server/auth/routes.js:622 |++| PUT | /api/auth/anon/:token/preferences | server/auth/routes.js:599 |++| POST | /api/auth/change-password | server/auth/routes.js:425 || GET | /api/auth/discord/callback | server/auth/discord-link.js:61 || DELETE | /api/auth/discord/link | server/auth/discord-link.js:158 || GET | /api/auth/discord/link | server/auth/discord-link.js:31 |@@@ -587,22 +587,22 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t| POST | /api/auth/email/send-verification | server/auth/email-verify.js:99 || GET | /api/auth/email/status | server/auth/email-verify.js:83 || POST | /api/auth/email/verify | server/auth/email-verify.js:122 |--| POST | /api/auth/forgot-password | server/auth/routes.js:206 |--| POST | /api/auth/login | server/auth/routes.js:183 |--| POST | /api/auth/logout | server/auth/routes.js:506 |--| GET | /api/auth/me | server/auth/routes.js:362 |--| PUT | /api/auth/profile | server/auth/routes.js:372 |--| POST | /api/auth/refresh | server/auth/routes.js:300 |--| POST | /api/auth/register | server/auth/routes.js:88 |--| POST | /api/auth/reset-password | server/auth/routes.js:254 |--| GET | /api/auth/reset-password/validate | server/auth/routes.js:238 |--| DELETE | /api/auth/sessions | server/auth/routes.js:717 |--| GET | /api/auth/sessions | server/auth/routes.js:673 |--| POST | /api/auth/sessions | server/auth/routes.js:686 |--| DELETE | /api/auth/sessions/:id | server/auth/routes.js:708 |--| GET | /api/auth/users/:id/card | server/auth/routes.js:728 |--| DELETE | /api/auth/users/:id/follow | server/auth/routes.js:811 |--| POST | /api/auth/users/:id/follow | server/auth/routes.js:780 |++| POST | /api/auth/forgot-password | server/auth/routes.js:208 |++| POST | /api/auth/login | server/auth/routes.js:185 |++| POST | /api/auth/logout | server/auth/routes.js:509 |++| GET | /api/auth/me | server/auth/routes.js:364 |++| PUT | /api/auth/profile | server/auth/routes.js:375 |++| POST | /api/auth/refresh | server/auth/routes.js:302 |++| POST | /api/auth/register | server/auth/routes.js:90 |++| POST | /api/auth/reset-password | server/auth/routes.js:256 |++| GET | /api/auth/reset-password/validate | server/auth/routes.js:240 |++| DELETE | /api/auth/sessions | server/auth/routes.js:720 |++| GET | /api/auth/sessions | server/auth/routes.js:676 |++| POST | /api/auth/sessions | server/auth/routes.js:689 |++| DELETE | /api/auth/sessions/:id | server/auth/routes.js:711 |++| GET | /api/auth/users/:id/card | server/auth/routes.js:731 |++| DELETE | /api/auth/users/:id/follow | server/auth/routes.js:814 |++| POST | /api/auth/users/:id/follow | server/auth/routes.js:783 || GET | /api/brand | server/index.js:373 || GET | /api/catalog.json | server/index.js:423 || GET | /api/chrome | server/chrome/service.js:137 |@@@ -664,31 +664,33 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t| POST | /fedcm/disconnect | server/auth/fedcm.js:142 || GET | /health | server/admin/routes.js:766 || POST | /identity | server/setup/routes.js:152 |--| GET | /internal/anon-admin | server/internal/routes.js:618 |--| GET | /internal/anon-list | server/internal/routes.js:667 |--| POST | /internal/audit | server/internal/routes.js:156 |--| POST | /internal/coins/credit | server/internal/routes.js:242 |--| POST | /internal/coins/debit | server/internal/routes.js:254 |--| GET | /internal/coins/stats | server/internal/routes.js:204 |--| POST | /internal/coins/transfer | server/internal/routes.js:267 |--| POST | /internal/events/stream-live | server/internal/routes.js:284 |--| POST | /internal/issue-token | server/internal/routes.js:508 |--| POST | /internal/link-account | server/internal/routes.js:107 |--| POST | /internal/notifications/mark-read | server/internal/routes.js:469 |--| POST | /internal/notifications/push | server/internal/routes.js:411 |--| POST | /internal/notifications/push-bulk | server/internal/routes.js:431 |--| POST | /internal/notifications/resolve-users | server/internal/routes.js:488 |--| GET | /internal/notifications/unread/:userId | server/internal/routes.js:454 |--| POST | /internal/resolve-anon | server/internal/routes.js:539 |--| GET | /internal/stats | server/internal/routes.js:165 |--| GET | /internal/url-registry/resolved | server/internal/routes.js:174 |--| POST | /internal/user-avatar | server/internal/routes.js:141 |--| GET | /internal/users/:id | server/internal/routes.js:58 |--| GET | /internal/users/:id/linked-accounts | server/internal/routes.js:149 |--| GET | /internal/users/:id/theme | server/internal/routes.js:95 |--| POST | /internal/users/bulk | server/internal/routes.js:80 |--| GET | /internal/users/by-username/:username | server/internal/routes.js:69 |--| POST | /internal/verify-token | server/internal/routes.js:36 |++| GET | /internal/anon-admin | server/internal/routes.js:628 |++| GET | /internal/anon-list | server/internal/routes.js:677 |++| POST | /internal/audit | server/internal/routes.js:166 |++| POST | /internal/coins/credit | server/internal/routes.js:252 |++| POST | /internal/coins/debit | server/internal/routes.js:264 |++| GET | /internal/coins/stats | server/internal/routes.js:214 |++| POST | /internal/coins/transfer | server/internal/routes.js:277 |++| POST | /internal/events/stream-live | server/internal/routes.js:294 |++| POST | /internal/identity/legacy-map | server/identity/internal-routes.js:29 |++| GET | /internal/identity/resolve | server/identity/internal-routes.js:18 |++| POST | /internal/issue-token | server/internal/routes.js:518 |++| POST | /internal/link-account | server/internal/routes.js:108 |++| POST | /internal/notifications/mark-read | server/internal/routes.js:479 |++| POST | /internal/notifications/push | server/internal/routes.js:421 |++| POST | /internal/notifications/push-bulk | server/internal/routes.js:441 |++| POST | /internal/notifications/resolve-users | server/internal/routes.js:498 |++| GET | /internal/notifications/unread/:userId | server/internal/routes.js:464 |++| POST | /internal/resolve-anon | server/internal/routes.js:549 |++| GET | /internal/stats | server/internal/routes.js:175 |++| GET | /internal/url-registry/resolved | server/internal/routes.js:184 |++| POST | /internal/user-avatar | server/internal/routes.js:151 |++| GET | /internal/users/:id | server/internal/routes.js:59 |++| GET | /internal/users/:id/linked-accounts | server/internal/routes.js:159 |++| GET | /internal/users/:id/theme | server/internal/routes.js:96 |++| POST | /internal/users/bulk | server/internal/routes.js:81 |++| GET | /internal/users/by-username/:username | server/internal/routes.js:70 |++| POST | /internal/verify-token | server/internal/routes.js:37 || GET | /llms.txt | server/index.js:550 || GET | /me | server/coins/routes.js:18 || GET | /me/history | server/coins/routes.js:24 |@@@ -700,10 +702,10 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t| GET | /nginx/preview/:serviceId | server/deploy/routes.js:314 || POST | /nginx/reload | server/deploy/routes.js:382 || POST | /nginx/validate | server/deploy/routes.js:330 |--| GET | /oauth/.well-known/openid-configuration | server/auth/oauth-routes.js:304 |--| GET | /oauth/authorize | server/auth/oauth-routes.js:20 |--| POST | /oauth/confirm | server/auth/oauth-routes.js:78 |--| POST | /oauth/token | server/auth/oauth-routes.js:131 |++| GET | /oauth/.well-known/openid-configuration | server/auth/oauth-routes.js:306 |++| GET | /oauth/authorize | server/auth/oauth-routes.js:21 |++| POST | /oauth/confirm | server/auth/oauth-routes.js:79 |++| POST | /oauth/token | server/auth/oauth-routes.js:132 || GET | /openvibe-sw.js | server/index.js:596 || GET | /overview | server/admin/analytics-routes.js:75 || GET | /preferences | server/notifications/routes.js:121 |@@@ -9,7 +9,7 @@ Deliverable 6. Current owner = the repo that creates the table; target owner = r| Current owner | Tables | Stay | Move | Frozen legacy | Investigate ||---|---|---|---|---|---|| OpenVibe.Live | 186 | 26 | 94 | 43 | 23 |--| OpenVibe.Network | 35 | 32 | 3 | 0 | 0 |++| OpenVibe.Network | 36 | 33 | 3 | 0 | 0 || OpenVibe.Media | 15 | 12 | 3 | 0 | 0 || OpenVibe.Tools | 4 | 4 | 0 | 0 | 0 || OpenVibe.Community | 4 | 4 | 0 | 0 | 0 |@@@ -2,7 +2,7 @@> 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-22 20:43 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.++Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-22 21:23 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.| Severity | Area | Subject | Detail ||---|---|---|---|@@@ -7,7 +7,7 @@ Deliverable 8. Family-level status from roadmap 3.2. Evidence paths are checked| IDs | Family | Status | Disposition | Wave | Evidence | Measured ||---|---|---|---|---|---|---|| D01 | Identity/account | partial | partial | W1 | Network/server/auth; Community/server/live-client.js | 7 Live tables target OpenVibe.Network |--| D02-D04 | Registry, capabilities, contracts | absent | missing | W1, W2 | Network/server/url-registry.js; Sites/sites.json | 21 charter-only repos of 32; Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0 |++| D02-D04 | Registry, capabilities, contracts | absent | missing | W1, W2 | Network/server/url-registry.js; Sites/sites.json | 20 charter-only repos of 32; Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0 || D05-D06 | Policy, staff, user modules | partial | partial | W1, W2 | Network/server/admin; Live/server/auth/permissions.js | - || D07-D10 | Themes, notifications, social, analytics | partial | partial | W1, W2, Track O | Network/server/themes; Network/server/notifications | 5 repos carry their own analytics_events || D11-D13 | Events, realtime, SDK | absent | missing | W2, W3 | Media/server/webhooks.js | 65 caller-file/target pairs across 50 files; 10 WebSocket server constructions |@@@ -18,7 +18,7 @@ Deliverable 8. Family-level status from roadmap 3.2. Evidence paths are checked| D28-D30 | Billing, Tips, VIP | partial | partial | W8-W10 (ADR-012 first) | Live/server/monetization/payments.js; Network/server/coins | 2 Live tables target OpenVibe.Billing; 2 Network tables target OpenVibe.Billing (loyalty ledger) || D31 | Tools | built | already-present-and-verified | W11 | Tools/apps/gateway | 2 test files || D32 | Games | built | already-present-and-verified | W12 | Games/apps/server/src/net/sso.ts | 56 test files |--| D33-D34 | Codes, Host | absent | missing | W20, W21 | - | 21 charter-only repos of 32 |++| D33-D34 | Codes, Host | absent | missing | W20, W21 | - | 20 charter-only repos of 32 || D35-D38 | AI, content, sources, search | partial | partial | W13-W15 | Live/server/ai/moment-registry.js; Live/server/ai/llm.js | 14 Live tables target OpenVibe.AI || D39 | Mods | absent | missing | W12, W21 | - | - || D40 | Open developer services | absent | missing | W20, W21 | Live/server/integrations/powerchat-routes.js | 28 of 65 call sites authenticate with the shared internal key |@@@ -2,15 +2,15 @@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 `e31e342`, Network `71be248`, Media `6114bc6`, Tools `0346edc`, Community `de947ea`, Games `5710287`, Sites `185014f`. Production snapshot: openvibe-oregon, 2026-09-22.++Source commits: Live `24151bd`, Network `9b4e262`, Media `6114bc6`, Tools `0346edc`, Community `de947ea`, Games `5710287`, Sites `185014f`. Production snapshot: openvibe-oregon, 2026-09-22.## Deliverables| # | Artifact | Contents ||---|---|---|| 1 | [01-services.md](01-services.md) | services, ports, units, env files, repo state, GitHub census |--| 2 | [02-schema.md](02-schema.md) | 249 tables with current/target owner |--| 3 | [03-routes.md](03-routes.md), [04-cross-service.md](04-cross-service.md) | 926 routes; 65 cross-service call sites |++| 2 | [02-schema.md](02-schema.md) | 250 tables with current/target owner |++| 3 | [03-routes.md](03-routes.md), [04-cross-service.md](04-cross-service.md) | 928 routes; 65 cross-service call sites || 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 |@@@ -23,8 +23,8 @@ Source commits: Live `e31e342`, Network `71be248`, Media `6114bc6`, Tools `0346e| | Criterion | Result ||---|---|---|--| pass | Every table has an owner classification | 249 tables classified, 0 unclassified |--| pass | Every route is attributed to a repo and source line | 926 routes; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix) |++| pass | Every table has an owner classification | 250 tables classified, 0 unclassified |++| pass | Every route is attributed to a repo and source line | 928 routes; 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 | 82 timers/jobs || pass | Every cross-service call records caller, callee, auth, timeout and retry | 65 call sites; 30 with no timeout detected || pass | Unknowns are marked unknown, not guessed | 2 unknown items recorded |@@@ -1,7 +1,7 @@{"generatedFrom": {-- "OpenVibe.Live": "e31e3422db7e3846051aeeb07fa661b8812c123d",-- "OpenVibe.Network": "71be248264060ca6d30d083571928f9a10002688",++ "OpenVibe.Live": "24151bdc12ffe6e6f2fbe8c3770327b2d1635a8a",++ "OpenVibe.Network": "9b4e262cd8daf05ee2b6b92a06dabe70e2d42bc7","OpenVibe.Media": "6114bc61c466cd51335548d0ce87058df125c577","OpenVibe.Tools": "0346edc57fb9f588abcdea171a22a5ca33f772d2","OpenVibe.Community": "de947ead2addce29d7f9b98f3d894075ca4e82f2",@@@ -10,7 +10,7 @@},"prodSnapshot": {"host": "openvibe-oregon",-- "collectedAt": "2026-09-22T20:43:28.028Z"++ "collectedAt": "2026-09-22T21:23:31.121Z"},"repos": [{@@@ -18,13 +18,13 @@"service": "live","present": true,"git": {-- "head": "e31e3422db7e3846051aeeb07fa661b8812c123d",++ "head": "24151bdc12ffe6e6f2fbe8c3770327b2d1635a8a","branch": "main",-- "originMain": "e31e3422db7e3846051aeeb07fa661b8812c123d",-- "committedAt": "2026-09-21T12:34:30-07:00"++ "originMain": "24151bdc12ffe6e6f2fbe8c3770327b2d1635a8a",++ "committedAt": "2026-09-22T14:18:25-07:00"},-- "sourceFiles": 164,-- "loc": 69622,++ "sourceFiles": 165,++ "loc": 69699,"tables": [{"table": "arena_profiles",@@@ -125,319 +125,319 @@{"table": "chat_messages_new","file": "server/db/database.js",-- "line": 415,++ "line": 419,"via": "repo"},{"table": "translations","file": "server/db/database.js",-- "line": 506,++ "line": 510,"via": "repo"},{"table": "robotstreamer_integrations","file": "server/db/database.js",-- "line": 605,++ "line": 609,"via": "repo"},{"table": "robotstreamer_integrations_new","file": "server/db/database.js",-- "line": 656,++ "line": 660,"via": "repo"},{"table": "restream_destinations","file": "server/db/database.js",-- "line": 691,++ "line": 695,"via": "repo"},{"table": "platform_connections","file": "server/db/database.js",-- "line": 709,++ "line": 713,"via": "repo"},{"table": "powerchat_connections","file": "server/db/database.js",-- "line": 731,++ "line": 735,"via": "repo"},{"table": "powerchat_webhook_deliveries","file": "server/db/database.js",-- "line": 748,++ "line": 752,"via": "repo"},{"table": "channel_points","file": "server/db/database.js",-- "line": 760,++ "line": 764,"via": "repo"},{"table": "kick_channel_cache","file": "server/db/database.js",-- "line": 774,++ "line": 778,"via": "repo"},{"table": "comments","file": "server/db/database.js",-- "line": 849,++ "line": 853,"via": "repo"},{"table": "media_request_settings","file": "server/db/database.js",-- "line": 869,++ "line": 873,"via": "repo"},{"table": "media_requests","file": "server/db/database.js",-- "line": 883,++ "line": 887,"via": "repo"},{"table": "anon_ip_mappings","file": "server/db/database.js",-- "line": 936,++ "line": 940,"via": "repo"},{"table": "app_state","file": "server/db/database.js",-- "line": 1167,++ "line": 1171,"via": "repo"},{"table": "stream_memories","file": "server/db/database.js",-- "line": 1181,++ "line": 1185,"via": "repo"},{"table": "stream_timeline_events","file": "server/db/database.js",-- "line": 1229,++ "line": 1233,"via": "repo"},{"table": "ai_usage","file": "server/db/database.js",-- "line": 1254,++ "line": 1258,"via": "repo"},{"table": "streamer_overviews","file": "server/db/database.js",-- "line": 1274,++ "line": 1278,"via": "repo"},{"table": "ai_timeline_cache","file": "server/db/database.js",-- "line": 1296,++ "line": 1300,"via": "repo"},{"table": "chat_ai_summaries","file": "server/db/database.js",-- "line": 1308,++ "line": 1312,"via": "repo"},{"table": "chat_timeline_events","file": "server/db/database.js",-- "line": 1328,++ "line": 1332,"via": "repo"},{"table": "easter_egg_solves","file": "server/db/database.js",-- "line": 1340,++ "line": 1344,"via": "repo"},{"table": "tts_voice_overrides","file": "server/db/database.js",-- "line": 1352,++ "line": 1356,"via": "repo"},{"table": "relay_users","file": "server/db/database.js",-- "line": 1466,++ "line": 1470,"via": "repo"},{"table": "payment_orders","file": "server/db/database.js",-- "line": 1588,++ "line": 1592,"via": "repo"},{"table": "channel_moderators","file": "server/db/database.js",-- "line": 1621,++ "line": 1625,"via": "repo"},{"table": "channel_moderation_settings","file": "server/db/database.js",-- "line": 1638,++ "line": 1642,"via": "repo"},{"table": "emotes_new","file": "server/db/database.js",-- "line": 1709,++ "line": 1713,"via": "repo"},{"table": "channel_sounds","file": "server/db/database.js",-- "line": 1741,++ "line": 1745,"via": "repo"},{"table": "channel_sounds_new","file": "server/db/database.js",-- "line": 1765,++ "line": 1769,"via": "repo"},{"table": "ai_chatbot_configs","file": "server/db/database.js",-- "line": 1803,++ "line": 1807,"via": "repo"},{"table": "channel_ai_bots","file": "server/db/database.js",-- "line": 1828,++ "line": 1832,"via": "repo"},{"table": "channel_ai_config","file": "server/db/database.js",-- "line": 1852,++ "line": 1856,"via": "repo"},{"table": "ai_viewer_threads","file": "server/db/database.js",-- "line": 1873,++ "line": 1877,"via": "repo"},{"table": "ai_viewer_log","file": "server/db/database.js",-- "line": 1887,++ "line": 1891,"via": "repo"},{"table": "moderation_actions","file": "server/db/database.js",-- "line": 1920,++ "line": 1924,"via": "repo"},{"table": "pastes","file": "server/db/database.js",-- "line": 1939,++ "line": 1943,"via": "repo"},{"table": "paste_likes","file": "server/db/database.js",-- "line": 1976,++ "line": 1980,"via": "repo"},{"table": "paste_comments","file": "server/db/database.js",-- "line": 2008,++ "line": 2012,"via": "repo"},{"table": "stream_first_chats","file": "server/db/database.js",-- "line": 2040,++ "line": 2044,"via": "repo"},{"table": "ip_log","file": "server/db/database.js",-- "line": 2051,++ "line": 2055,"via": "repo"},{"table": "approved_ips","file": "server/db/database.js",-- "line": 2075,++ "line": 2079,"via": "repo"},{"table": "pending_ip_messages","file": "server/db/database.js",-- "line": 2092,++ "line": 2096,"via": "repo"},{"table": "hidden_relay_users","file": "server/db/database.js",-- "line": 2112,++ "line": 2116,"via": "repo"},{"table": "control_whitelist","file": "server/db/database.js",-- "line": 2277,++ "line": 2281,"via": "repo"},{"table": "control_configs","file": "server/db/database.js",-- "line": 2292,++ "line": 2296,"via": "repo"},{"table": "control_config_buttons","file": "server/db/database.js",-- "line": 2306,++ "line": 2310,"via": "repo"},{"table": "stream_controls_new","file": "server/db/database.js",-- "line": 2385,++ "line": 2389,"via": "repo"},{"table": "managed_streams","file": "server/db/database.js",-- "line": 2420,++ "line": 2424,"via": "repo"},{"table": "vibe_coding_sessions","file": "server/db/database.js",-- "line": 2642,++ "line": 2646,"via": "repo"},{"table": "vibe_coding_events","file": "server/db/database.js",-- "line": 2677,++ "line": 2681,"via": "repo"},{"table": "viewer_samples","file": "server/db/database.js",-- "line": 3956,++ "line": 3960,"via": "repo"},{@@@ -5366,7 +5366,7 @@],"contractTodos": 15,"unresolvedMounts": [],-- "testFiles": 55,++ "testFiles": 56,"ci": false},{@@@ -5374,13 +5374,13 @@"service": "network","present": true,"git": {-- "head": "71be248264060ca6d30d083571928f9a10002688",++ "head": "9b4e262cd8daf05ee2b6b92a06dabe70e2d42bc7","branch": "main",-- "originMain": "71be248264060ca6d30d083571928f9a10002688",-- "committedAt": "2026-09-21T11:57:37-07:00"++ "originMain": "9b4e262cd8daf05ee2b6b92a06dabe70e2d42bc7",++ "committedAt": "2026-09-22T14:14:53-07:00"},-- "sourceFiles": 77,-- "loc": 20399,++ "sourceFiles": 79,++ "loc": 20646,"tables": [{"table": "admin_rate_limits",@@@ -5547,7 +5547,7 @@{"table": "email_verification_tokens","file": "server/db/database.js",-- "line": 506,++ "line": 509,"via": "repo"},{@@@ -5562,10 +5562,16 @@"line": 26,"via": "repo"},++ {++ "table": "identity_legacy_map",++ "file": "server/identity/subjects.js",++ "line": 25,++ "via": "repo"++ },{"table": "stream_live_announcements","file": "server/internal/routes.js",-- "line": 300,++ "line": 310,"via": "repo"},{@@@ -5706,37 +5712,37 @@"method": "GET","path": "/api/auth/anon-identities","file": "server/auth/routes.js",-- "line": 635++ "line": 638},{"method": "POST","path": "/api/auth/anon-session","file": "server/auth/routes.js",-- "line": 512++ "line": 515},{"method": "GET","path": "/api/auth/anon/:token","file": "server/auth/routes.js",-- "line": 582++ "line": 585},{"method": "POST","path": "/api/auth/anon/:token/link","file": "server/auth/routes.js",-- "line": 619++ "line": 622},{"method": "PUT","path": "/api/auth/anon/:token/preferences","file": "server/auth/routes.js",-- "line": 596++ "line": 599},{"method": "POST","path": "/api/auth/change-password","file": "server/auth/routes.js",-- "line": 422++ "line": 425},{"method": "GET",@@@ -5784,97 +5790,97 @@"method": "POST","path": "/api/auth/forgot-password","file": "server/auth/routes.js",-- "line": 206++ "line": 208},{"method": "POST","path": "/api/auth/login","file": "server/auth/routes.js",-- "line": 183++ "line": 185},{"method": "POST","path": "/api/auth/logout","file": "server/auth/routes.js",-- "line": 506++ "line": 509},{"method": "GET","path": "/api/auth/me","file": "server/auth/routes.js",-- "line": 362++ "line": 364},{"method": "PUT","path": "/api/auth/profile","file": "server/auth/routes.js",-- "line": 372++ "line": 375},{"method": "POST","path": "/api/auth/refresh","file": "server/auth/routes.js",-- "line": 300++ "line": 302},{"method": "POST","path": "/api/auth/register","file": "server/auth/routes.js",-- "line": 88++ "line": 90},{"method": "POST","path": "/api/auth/reset-password","file": "server/auth/routes.js",-- "line": 254++ "line": 256},{"method": "GET","path": "/api/auth/reset-password/validate","file": "server/auth/routes.js",-- "line": 238++ "line": 240},{"method": "DELETE","path": "/api/auth/sessions","file": "server/auth/routes.js",-- "line": 717++ "line": 720},{"method": "GET","path": "/api/auth/sessions","file": "server/auth/routes.js",-- "line": 673++ "line": 676},{"method": "POST","path": "/api/auth/sessions","file": "server/auth/routes.js",-- "line": 686++ "line": 689},{"method": "DELETE","path": "/api/auth/sessions/:id","file": "server/auth/routes.js",-- "line": 708++ "line": 711},{"method": "GET","path": "/api/auth/users/:id/card","file": "server/auth/routes.js",-- "line": 728++ "line": 731},{"method": "DELETE","path": "/api/auth/users/:id/follow","file": "server/auth/routes.js",-- "line": 811++ "line": 814},{"method": "POST","path": "/api/auth/users/:id/follow","file": "server/auth/routes.js",-- "line": 780++ "line": 783},{"method": "GET",@@@ -6246,151 +6252,163 @@"method": "GET","path": "/internal/anon-admin","file": "server/internal/routes.js",-- "line": 618++ "line": 628},{"method": "GET","path": "/internal/anon-list","file": "server/internal/routes.js",-- "line": 667++ "line": 677},{"method": "POST","path": "/internal/audit","file": "server/internal/routes.js",-- "line": 156++ "line": 166},{"method": "POST","path": "/internal/coins/credit","file": "server/internal/routes.js",-- "line": 242++ "line": 252},{"method": "POST","path": "/internal/coins/debit","file": "server/internal/routes.js",-- "line": 254++ "line": 264},{"method": "GET","path": "/internal/coins/stats","file": "server/internal/routes.js",-- "line": 204++ "line": 214},{"method": "POST","path": "/internal/coins/transfer","file": "server/internal/routes.js",-- "line": 267++ "line": 277},{"method": "POST","path": "/internal/events/stream-live","file": "server/internal/routes.js",-- "line": 284++ "line": 294++ },++ {++ "method": "POST",++ "path": "/internal/identity/legacy-map",++ "file": "server/identity/internal-routes.js",++ "line": 29++ },++ {++ "method": "GET",++ "path": "/internal/identity/resolve",++ "file": "server/identity/internal-routes.js",++ "line": 18},{"method": "POST","path": "/internal/issue-token","file": "server/internal/routes.js",-- "line": 508++ "line": 518},{"method": "POST","path": "/internal/link-account","file": "server/internal/routes.js",-- "line": 107++ "line": 108},{"method": "POST","path": "/internal/notifications/mark-read","file": "server/internal/routes.js",-- "line": 469++ "line": 479},{"method": "POST","path": "/internal/notifications/push","file": "server/internal/routes.js",-- "line": 411++ "line": 421},{"method": "POST","path": "/internal/notifications/push-bulk","file": "server/internal/routes.js",-- "line": 431++ "line": 441},{"method": "POST","path": "/internal/notifications/resolve-users","file": "server/internal/routes.js",-- "line": 488++ "line": 498},{"method": "GET","path": "/internal/notifications/unread/:userId","file": "server/internal/routes.js",-- "line": 454++ "line": 464},{"method": "POST","path": "/internal/resolve-anon","file": "server/internal/routes.js",-- "line": 539++ "line": 549},{"method": "GET","path": "/internal/stats","file": "server/internal/routes.js",-- "line": 165++ "line": 175},{"method": "GET","path": "/internal/url-registry/resolved","file": "server/internal/routes.js",-- "line": 174++ "line": 184},{"method": "POST","path": "/internal/user-avatar","file": "server/internal/routes.js",-- "line": 141++ "line": 151},{"method": "GET","path": "/internal/users/:id","file": "server/internal/routes.js",-- "line": 58++ "line": 59},{"method": "GET","path": "/internal/users/:id/linked-accounts","file": "server/internal/routes.js",-- "line": 149++ "line": 159},{"method": "GET","path": "/internal/users/:id/theme","file": "server/internal/routes.js",-- "line": 95++ "line": 96},{"method": "POST","path": "/internal/users/bulk","file": "server/internal/routes.js",-- "line": 80++ "line": 81},{"method": "GET","path": "/internal/users/by-username/:username","file": "server/internal/routes.js",-- "line": 69++ "line": 70},{"method": "POST","path": "/internal/verify-token","file": "server/internal/routes.js",-- "line": 36++ "line": 37},{"method": "GET",@@@ -6462,25 +6480,25 @@"method": "GET","path": "/oauth/.well-known/openid-configuration","file": "server/auth/oauth-routes.js",-- "line": 304++ "line": 306},{"method": "GET","path": "/oauth/authorize","file": "server/auth/oauth-routes.js",-- "line": 20++ "line": 21},{"method": "POST","path": "/oauth/confirm","file": "server/auth/oauth-routes.js",-- "line": 78++ "line": 79},{"method": "POST","path": "/oauth/token","file": "server/auth/oauth-routes.js",-- "line": 131++ "line": 132},{"method": "GET",@@@ -7230,7 +7248,7 @@],"contractTodos": 0,"unresolvedMounts": [],-- "testFiles": 17,++ "testFiles": 18,"ci": false},{@@@ -11173,7 +11191,7 @@"repo": "OpenVibe.Live","table": "ai_chatbot_configs","declaredAt": [-- "server/db/database.js:1803"++ "server/db/database.js:1807"],"prodDbs": ["live.db"@@@ -11217,7 +11235,7 @@"repo": "OpenVibe.Live","table": "ai_timeline_cache","declaredAt": [-- "server/db/database.js:1296"++ "server/db/database.js:1300"],"prodDbs": ["live.db"@@@ -11233,7 +11251,7 @@"repo": "OpenVibe.Live","table": "ai_usage","declaredAt": [-- "server/db/database.js:1254"++ "server/db/database.js:1258"],"prodDbs": ["live.db"@@@ -11249,7 +11267,7 @@"repo": "OpenVibe.Live","table": "ai_viewer_log","declaredAt": [-- "server/db/database.js:1887"++ "server/db/database.js:1891"],"prodDbs": ["live.db"@@@ -11265,7 +11283,7 @@"repo": "OpenVibe.Live","table": "ai_viewer_threads","declaredAt": [-- "server/db/database.js:1873"++ "server/db/database.js:1877"],"prodDbs": ["live.db"@@@ -11359,7 +11377,7 @@"repo": "OpenVibe.Live","table": "anon_ip_mappings","declaredAt": [-- "server/db/database.js:936"++ "server/db/database.js:940"],"prodDbs": ["live.db"@@@ -11407,7 +11425,7 @@"repo": "OpenVibe.Live","table": "app_state","declaredAt": [-- "server/db/database.js:1167"++ "server/db/database.js:1171"],"prodDbs": ["live.db"@@@ -11423,7 +11441,7 @@"repo": "OpenVibe.Live","table": "approved_ips","declaredAt": [-- "server/db/database.js:2075"++ "server/db/database.js:2079"],"prodDbs": ["live.db"@@@ -12021,7 +12039,7 @@"repo": "OpenVibe.Live","table": "channel_ai_bots","declaredAt": [-- "server/db/database.js:1828"++ "server/db/database.js:1832"],"prodDbs": ["live.db"@@@ -12037,7 +12055,7 @@"repo": "OpenVibe.Live","table": "channel_ai_config","declaredAt": [-- "server/db/database.js:1852"++ "server/db/database.js:1856"],"prodDbs": ["live.db"@@@ -12053,7 +12071,7 @@"repo": "OpenVibe.Live","table": "channel_moderation_settings","declaredAt": [-- "server/db/database.js:1638",++ "server/db/database.js:1642","server/db/schema.sql:514"],"prodDbs": [@@@ -12070,7 +12088,7 @@"repo": "OpenVibe.Live","table": "channel_moderators","declaredAt": [-- "server/db/database.js:1621",++ "server/db/database.js:1625","server/db/schema.sql:499"],"prodDbs": [@@@ -12087,7 +12105,7 @@"repo": "OpenVibe.Live","table": "channel_points","declaredAt": [-- "server/db/database.js:760"++ "server/db/database.js:764"],"prodDbs": ["live.db"@@@ -12103,7 +12121,7 @@"repo": "OpenVibe.Live","table": "channel_sounds","declaredAt": [-- "server/db/database.js:1741",++ "server/db/database.js:1745","server/db/schema.sql:625"],"prodDbs": [@@@ -12120,7 +12138,7 @@"repo": "OpenVibe.Live","table": "channel_sounds_new","declaredAt": [-- "server/db/database.js:1765"++ "server/db/database.js:1769"],"prodDbs": [],"inCode": true,@@@ -12150,7 +12168,7 @@"repo": "OpenVibe.Live","table": "chat_ai_summaries","declaredAt": [-- "server/db/database.js:1308"++ "server/db/database.js:1312"],"prodDbs": ["live.db"@@@ -12196,7 +12214,7 @@"repo": "OpenVibe.Live","table": "chat_messages_new","declaredAt": [-- "server/db/database.js:415"++ "server/db/database.js:419"],"prodDbs": [],"inCode": true,@@@ -12210,7 +12228,7 @@"repo": "OpenVibe.Live","table": "chat_timeline_events","declaredAt": [-- "server/db/database.js:1328"++ "server/db/database.js:1332"],"prodDbs": ["live.db"@@@ -12348,7 +12366,7 @@"repo": "OpenVibe.Live","table": "comments","declaredAt": [-- "server/db/database.js:849",++ "server/db/database.js:853","server/db/schema.sql:585"],"prodDbs": [@@@ -12381,7 +12399,7 @@"repo": "OpenVibe.Live","table": "control_config_buttons","declaredAt": [-- "server/db/database.js:2306"++ "server/db/database.js:2310"],"prodDbs": ["live.db"@@@ -12397,7 +12415,7 @@"repo": "OpenVibe.Live","table": "control_configs","declaredAt": [-- "server/db/database.js:2292"++ "server/db/database.js:2296"],"prodDbs": ["live.db"@@@ -12413,7 +12431,7 @@"repo": "OpenVibe.Live","table": "control_whitelist","declaredAt": [-- "server/db/database.js:2277"++ "server/db/database.js:2281"],"prodDbs": ["live.db"@@@ -12565,7 +12583,7 @@"repo": "OpenVibe.Live","table": "easter_egg_solves","declaredAt": [-- "server/db/database.js:1340"++ "server/db/database.js:1344"],"prodDbs": ["live.db"@@@ -12597,7 +12615,7 @@"repo": "OpenVibe.Live","table": "emotes_new","declaredAt": [-- "server/db/database.js:1709"++ "server/db/database.js:1713"],"prodDbs": [],"inCode": true,@@@ -12940,7 +12958,7 @@"repo": "OpenVibe.Live","table": "hidden_relay_users","declaredAt": [-- "server/db/database.js:2112"++ "server/db/database.js:2116"],"prodDbs": ["live.db"@@@ -12970,7 +12988,7 @@"repo": "OpenVibe.Live","table": "ip_log","declaredAt": [-- "server/db/database.js:2051"++ "server/db/database.js:2055"],"prodDbs": ["live.db"@@@ -13000,7 +13018,7 @@"repo": "OpenVibe.Live","table": "kick_channel_cache","declaredAt": [-- "server/db/database.js:774"++ "server/db/database.js:778"],"prodDbs": ["live.db"@@@ -13074,7 +13092,7 @@"repo": "OpenVibe.Live","table": "managed_streams","declaredAt": [-- "server/db/database.js:2420",++ "server/db/database.js:2424","server/db/schema.sql:78"],"prodDbs": [@@@ -13091,7 +13109,7 @@"repo": "OpenVibe.Live","table": "media_request_settings","declaredAt": [-- "server/db/database.js:869",++ "server/db/database.js:873","server/db/schema.sql:722"],"prodDbs": [@@@ -13108,7 +13126,7 @@"repo": "OpenVibe.Live","table": "media_requests","declaredAt": [-- "server/db/database.js:883",++ "server/db/database.js:887","server/db/schema.sql:739"],"prodDbs": [@@@ -13154,7 +13172,7 @@"repo": "OpenVibe.Live","table": "moderation_actions","declaredAt": [-- "server/db/database.js:1920"++ "server/db/database.js:1924"],"prodDbs": ["live.db"@@@ -13200,7 +13218,7 @@"repo": "OpenVibe.Live","table": "paste_comments","declaredAt": [-- "server/db/database.js:2008"++ "server/db/database.js:2012"],"prodDbs": ["live.db"@@@ -13216,7 +13234,7 @@"repo": "OpenVibe.Live","table": "paste_likes","declaredAt": [-- "server/db/database.js:1976"++ "server/db/database.js:1980"],"prodDbs": ["live.db"@@@ -13232,7 +13250,7 @@"repo": "OpenVibe.Live","table": "pastes","declaredAt": [-- "server/db/database.js:1939"++ "server/db/database.js:1943"],"prodDbs": ["live.db"@@@ -13248,7 +13266,7 @@"repo": "OpenVibe.Live","table": "payment_orders","declaredAt": [-- "server/db/database.js:1588"++ "server/db/database.js:1592"],"prodDbs": ["live.db"@@@ -13264,7 +13282,7 @@"repo": "OpenVibe.Live","table": "pending_ip_messages","declaredAt": [-- "server/db/database.js:2092"++ "server/db/database.js:2096"],"prodDbs": ["live.db"@@@ -13280,7 +13298,7 @@"repo": "OpenVibe.Live","table": "platform_connections","declaredAt": [-- "server/db/database.js:709"++ "server/db/database.js:713"],"prodDbs": ["live.db"@@@ -13296,7 +13314,7 @@"repo": "OpenVibe.Live","table": "powerchat_connections","declaredAt": [-- "server/db/database.js:731"++ "server/db/database.js:735"],"prodDbs": ["live.db"@@@ -13312,7 +13330,7 @@"repo": "OpenVibe.Live","table": "powerchat_webhook_deliveries","declaredAt": [-- "server/db/database.js:748"++ "server/db/database.js:752"],"prodDbs": ["live.db"@@@ -13342,7 +13360,7 @@"repo": "OpenVibe.Live","table": "relay_users","declaredAt": [-- "server/db/database.js:1466"++ "server/db/database.js:1470"],"prodDbs": ["live.db"@@@ -13358,7 +13376,7 @@"repo": "OpenVibe.Live","table": "restream_destinations","declaredAt": [-- "server/db/database.js:691"++ "server/db/database.js:695"],"prodDbs": ["live.db"@@@ -13402,7 +13420,7 @@"repo": "OpenVibe.Live","table": "robotstreamer_integrations","declaredAt": [-- "server/db/database.js:605",++ "server/db/database.js:609","server/db/schema.sql:58"],"prodDbs": [@@@ -13419,7 +13437,7 @@"repo": "OpenVibe.Live","table": "robotstreamer_integrations_new","declaredAt": [-- "server/db/database.js:656"++ "server/db/database.js:660"],"prodDbs": [],"inCode": true,@@@ -13498,7 +13516,7 @@"repo": "OpenVibe.Live","table": "stream_controls_new","declaredAt": [-- "server/db/database.js:2385"++ "server/db/database.js:2389"],"prodDbs": [],"inCode": true,@@@ -13512,7 +13530,7 @@"repo": "OpenVibe.Live","table": "stream_first_chats","declaredAt": [-- "server/db/database.js:2040"++ "server/db/database.js:2044"],"prodDbs": ["live.db"@@@ -13528,7 +13546,7 @@"repo": "OpenVibe.Live","table": "stream_memories","declaredAt": [-- "server/db/database.js:1181"++ "server/db/database.js:1185"],"prodDbs": ["live.db"@@@ -13560,7 +13578,7 @@"repo": "OpenVibe.Live","table": "stream_timeline_events","declaredAt": [-- "server/db/database.js:1229"++ "server/db/database.js:1233"],"prodDbs": ["live.db"@@@ -13576,7 +13594,7 @@"repo": "OpenVibe.Live","table": "streamer_overviews","declaredAt": [-- "server/db/database.js:1274"++ "server/db/database.js:1278"],"prodDbs": ["live.db"@@@ -13672,7 +13690,7 @@"repo": "OpenVibe.Live","table": "translations","declaredAt": [-- "server/db/database.js:506",++ "server/db/database.js:510","server/i18n/translate.js:145"],"prodDbs": [@@@ -13689,7 +13707,7 @@"repo": "OpenVibe.Live","table": "tts_voice_overrides","declaredAt": [-- "server/db/database.js:1352"++ "server/db/database.js:1356"],"prodDbs": ["live.db"@@@ -13879,7 +13897,7 @@"repo": "OpenVibe.Live","table": "vibe_coding_events","declaredAt": [-- "server/db/database.js:2677",++ "server/db/database.js:2681","server/db/schema.sql:198"],"prodDbs": [@@@ -13896,7 +13914,7 @@"repo": "OpenVibe.Live","table": "vibe_coding_sessions","declaredAt": [-- "server/db/database.js:2642",++ "server/db/database.js:2646","server/db/schema.sql:170"],"prodDbs": [@@@ -13913,7 +13931,7 @@"repo": "OpenVibe.Live","table": "viewer_samples","declaredAt": [-- "server/db/database.js:3956"++ "server/db/database.js:3960"],"prodDbs": ["live.db"@@@ -14445,7 +14463,7 @@"repo": "OpenVibe.Network","table": "email_verification_tokens","declaredAt": [-- "server/db/database.js:506"++ "server/db/database.js:509"],"prodDbs": ["network.db"@@@ -14473,6 +14491,22 @@"wave": "W1 (module split)","note": "Identity, sessions, OAuth, themes, notifications, registry, chrome, audit, admin."},++ {++ "repo": "OpenVibe.Network",++ "table": "identity_legacy_map",++ "declaredAt": [++ "server/identity/subjects.js:25"++ ],++ "prodDbs": [++ "network.db"++ ],++ "inCode": true,++ "inProd": true,++ "target": "OpenVibe.Network",++ "disposition": "keep",++ "wave": "W1 (module split)",++ "note": "Identity, sessions, OAuth, themes, notifications, registry, chrome, audit, admin."++ },{"repo": "OpenVibe.Network","table": "ip_log",@@@ -14637,7 +14671,7 @@"repo": "OpenVibe.Network","table": "stream_live_announcements","declaredAt": [-- "server/internal/routes.js:300"++ "server/internal/routes.js:310"],"prodDbs": ["network.db"@@@ -19283,7 +19317,7 @@}],"metrics": {-- "github.charters": "21 charter-only repos of 32",++ "github.charters": "20 charter-only repos of 32","contract.todo-markers": "Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0","outbound.call-sites": "65 caller-file/target pairs across 50 files","outbound.internal-key": "28 of 65 call sites authenticate with the shared internal key",@@@ -19293,7 +19327,7 @@"vendored.divergent": "4 divergent: Community/ov-icons.js, Live/user-card.js, Media/ov-icons.js, Tools/ov-icons.js","ci.repos": "0 of 7 scanned repos have .github/workflows","deploy.drift": "1 service(s) not running origin/main",-- "tests.OpenVibe.Live": "55 test files",++ "tests.OpenVibe.Live": "56 test files","tables.OpenVibe.Live": "125 tables","tables.OpenVibe.Live.target:OpenVibe.Games (import source)": "31 Live tables target OpenVibe.Games (import source)","tables.OpenVibe.Live.target:OpenVibe.AI": "14 Live tables target OpenVibe.AI",@@@ -19312,9 +19346,9 @@"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": "17 test files",-- "tables.OpenVibe.Network": "35 tables",-- "tables.OpenVibe.Network.target:OpenVibe.Network": "32 Network tables target OpenVibe.Network",++ "tests.OpenVibe.Network": "18 test files",++ "tables.OpenVibe.Network": "36 tables",++ "tables.OpenVibe.Network.target:OpenVibe.Network": "33 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.Media": "4 test files",@@@ -19383,7 +19417,7 @@"metrics": [{"key": "github.charters",-- "value": "21 charter-only repos of 32"++ "value": "20 charter-only repos of 32"},{"key": "contract.todo-markers",@@@ -19660,7 +19694,7 @@"metrics": [{"key": "github.charters",-- "value": "21 charter-only repos of 32"++ "value": "20 charter-only repos of 32"}],"verified": true@@@ -20034,13 +20068,13 @@"id": "EC1","text": "Every table has an owner classification","pass": true,-- "detail": "249 tables classified, 0 unclassified"++ "detail": "250 tables classified, 0 unclassified"},{"id": "EC2","text": "Every route is attributed to a repo and source line","pass": true,-- "detail": "926 routes; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix)"++ "detail": "928 routes; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix)"},{"id": "EC3",
@@ -8,8 +8,8 @@ Deliverable 1: runtimes, ports, units, env files and repository state.
@@ -8,8 +8,8 @@ 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 | 71be248 | 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 | e31e342 | data/live.db, data/analytics.db, data/rs-companion.db |
+| network | OpenVibe.Network | live | http 4000 | openvibe-network.service | /etc/openvibe/network.env | 9b4e262 | 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 | 24151bd | data/live.db, data/analytics.db, data/rs-companion.db |
| media | OpenVibe.Media | partial | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 6114bc6 | data/media.db |
| media | OpenVibe.Media | partial | http 4100, rtpIngest 12000-12199/udp (127.0.0.1) | openvibe-media.service | /etc/openvibe/media.env | 6114bc6 | 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 | 0346edc | apps/<satellite>/data/analytics.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 | 0346edc | apps/<satellite>/data/analytics.db |
| games | OpenVibe.Games | live | http 8000 | openvibe-games.service | /etc/openvibe/games.env | 43c11f0 | data/world.db |
| games | OpenVibe.Games | live | http 8000 | openvibe-games.service | /etc/openvibe/games.env | 43c11f0 | data/world.db |
@@ -20,8 +20,8 @@ Deliverable 1: runtimes, ports, units, env files and repository state.
@@ -20,8 +20,8 @@ Deliverable 1: runtimes, ports, units, env files and repository state.
| 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 | e31e342 | e31e342 | 164 | 69622 | 55 | no | 532 | 125 | 8 | 48 | 15 |
-| OpenVibe.Network | 71be248 | 71be248 | 77 | 20399 | 17 | no | 185 | 35 | 0 | 11 | 0 |
+| OpenVibe.Live | 24151bd | 24151bd | 165 | 69699 | 56 | no | 532 | 125 | 8 | 48 | 15 |
+| OpenVibe.Network | 9b4e262 | 9b4e262 | 79 | 20646 | 18 | no | 187 | 36 | 0 | 11 | 0 |
| OpenVibe.Media | 6114bc6 | 6114bc6 | 28 | 8702 | 4 | no | 67 | 15 | 0 | 9 | 0 |
| OpenVibe.Media | 6114bc6 | 6114bc6 | 28 | 8702 | 4 | no | 67 | 15 | 0 | 9 | 0 |
| OpenVibe.Tools | 0346edc | 0346edc | 117 | 20018 | 2 | no | 99 | 4 | 0 | 12 | 0 |
| OpenVibe.Tools | 0346edc | 0346edc | 117 | 20018 | 2 | no | 99 | 4 | 0 | 12 | 0 |
| OpenVibe.Community | de947ea | de947ea | 11 | 1754 | 8 | no | 22 | 4 | 0 | 0 | 0 |
| OpenVibe.Community | de947ea | de947ea | 11 | 1754 | 8 | no | 22 | 4 | 0 | 0 | 0 |
@@ -44,16 +44,16 @@ LOC counts non-test source files in the scanned directories only (`server/`, `ap
@@ -44,16 +44,16 @@ LOC counts non-test source files in the scanned directories only (`server/`, `ap
| OpenVibe.Chat | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. |
| OpenVibe.Chat | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Rooms, messages, DMs, calls, TTS and audio queues, moderation and presence — one identity, every conversation. |
| OpenVibe.Codes | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. |
| OpenVibe.Codes | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | The developer portal: registry and contract explorers, credentials, playgrounds, examples, mod/app publishing, governance. |
| OpenVibe.Community | PUBLIC | - | 2026-09-21 | 687 KB | |
| OpenVibe.Community | PUBLIC | - | 2026-09-21 | 687 KB | |
-| OpenVibe.Contracts | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Machine-readable contracts for the whole OpenVibe network. |
+| OpenVibe.Contracts | PUBLIC | alpha | 2026-09-22 | 13 KB | Machine-readable contracts for the whole OpenVibe network. |
| OpenVibe.Coupons | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. |
| OpenVibe.Coupons | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Coupon codes with merchant matching, restrictions, expiry and real-people validity reports. |
| OpenVibe.Deals | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. |
| OpenVibe.Deals | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Deals submitted and voted on by the community, with source, price and freshness always shown. |
| OpenVibe.Events | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. |
| OpenVibe.Events | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Durable events, subscriptions, delivery, retry, dead letters and replay for the network. |
| OpenVibe.Examples | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Executable public integration examples, tested in CI against the platform. |
| OpenVibe.Examples | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Executable public integration examples, tested in CI against the platform. |
| OpenVibe.Games | PUBLIC | - | 2026-09-21 | 4675 KB | |
| OpenVibe.Games | PUBLIC | - | 2026-09-21 | 4675 KB | |
| OpenVibe.Host | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |
| OpenVibe.Host | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | The network's deployment/control plane first; then isolated hosting for community sites, bots and mods. |
-| OpenVibe.Live | PUBLIC | - | 2026-09-21 | 6455 KB | |
+| OpenVibe.Live | PUBLIC | - | 2026-09-22 | 6455 KB | |
| OpenVibe.Media | PUBLIC | - | 2026-09-21 | 847 KB | |
| OpenVibe.Media | PUBLIC | - | 2026-09-21 | 847 KB | |
-| OpenVibe.Network | PUBLIC | - | 2026-09-21 | 1037 KB | |
+| OpenVibe.Network | PUBLIC | - | 2026-09-22 | 1037 KB | |
| OpenVibe.News | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. |
| OpenVibe.News | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Source-backed stories: clustered coverage, cited summaries, perspectives and timelines. |
| OpenVibe.Realtime | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Browser delivery plane for events: authorised WS/SSE topics with cursors, resume and presence. |
| OpenVibe.Realtime | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Browser delivery plane for events: authorised WS/SSE topics with cursors, resume and presence. |
| OpenVibe.Reviews | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |
| OpenVibe.Reviews | PUBLIC | placeholder (no code) | 2026-09-21 | 13 KB | Review signals gathered across sources with provenance, entity resolution and honest aggregates. |
@@ -16,7 +16,7 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -16,7 +16,7 @@ Deliverable 2: every table declared in code or present in production, with curre
| /opt/openvibe.live/data/live.db | 279.2 MB | 146 |
| /opt/openvibe.live/data/live.db | 279.2 MB | 146 |
| /opt/openvibe.live/data/rs-companion.db | 8.6 MB | 33 |
| /opt/openvibe.live/data/rs-companion.db | 8.6 MB | 33 |
| /opt/openvibe.media/data/media.db | 5.6 MB | 11 |
| /opt/openvibe.media/data/media.db | 5.6 MB | 11 |
-| /opt/openvibe.network/data/network.db | 766.5 MB | 34 |
+| /opt/openvibe.network/data/network.db | 766.5 MB | 35 |
| /opt/openvibe.tools/apps/audio/data/analytics.db | 59.9 MB | 4 |
| /opt/openvibe.tools/apps/audio/data/analytics.db | 59.9 MB | 4 |
| /opt/openvibe.tools/apps/img/data/analytics.db | 5.5 MB | 4 |
| /opt/openvibe.tools/apps/img/data/analytics.db | 5.5 MB | 4 |
| /opt/openvibe.tools/apps/docs/data/analytics.db | 1.5 MB | 4 |
| /opt/openvibe.tools/apps/docs/data/analytics.db | 1.5 MB | 4 |
@@ -30,23 +30,23 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -30,23 +30,23 @@ Deliverable 2: every table declared in code or present in production, with curre
| Table | Declared at | In prod | Target owner | Disposition | Wave |
| Table | Declared at | In prod | Target owner | Disposition | Wave |
|---|---|---|---|---|---|
|---|---|---|---|---|---|
| active_effects | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| active_effects | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| ai_chatbot_configs | server/db/database.js:1803 | live.db | OpenVibe.AI | extract | W13 |
+| ai_chatbot_configs | server/db/database.js:1807 | live.db | OpenVibe.AI | extract | W13 |
| ai_conversations | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| ai_conversations | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| ai_memory | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| ai_memory | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| ai_timeline_cache | server/db/database.js:1296 | live.db | OpenVibe.AI | extract | W13 |
-| ai_usage | server/db/database.js:1254 | live.db | OpenVibe.AI | extract | W13 |
-| ai_viewer_log | server/db/database.js:1887 | live.db | OpenVibe.AI | extract | W13 |
-| ai_viewer_threads | server/db/database.js:1873 | live.db | OpenVibe.AI | extract | W13 |
+| ai_timeline_cache | server/db/database.js:1300 | live.db | OpenVibe.AI | extract | W13 |
+| ai_usage | server/db/database.js:1258 | live.db | OpenVibe.AI | extract | W13 |
+| ai_viewer_log | server/db/database.js:1891 | live.db | OpenVibe.AI | extract | W13 |
+| ai_viewer_threads | server/db/database.js:1877 | live.db | OpenVibe.AI | extract | W13 |
| analytics_daily | vendor/openvibe-shared/analytics.js:116 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_daily | vendor/openvibe-shared/analytics.js:116 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_events | vendor/openvibe-shared/analytics.js:74 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_events | vendor/openvibe-shared/analytics.js:74 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_hourly | vendor/openvibe-shared/analytics.js:98 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_hourly | vendor/openvibe-shared/analytics.js:98 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_rate_tracking | vendor/openvibe-shared/analytics.js:137 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_rate_tracking | vendor/openvibe-shared/analytics.js:137 | analytics.db | OpenVibe.Live | keep | Track O / ADR-021 |
| analytics_snapshots | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| analytics_snapshots | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| anon_ip_mappings | server/db/database.js:936 | live.db | OpenVibe.Network (policy) | extract | W1 |
+| anon_ip_mappings | server/db/database.js:940 | live.db | OpenVibe.Network (policy) | extract | W1 |
| api_keys | server/db/schema.sql:391 | live.db | OpenVibe.Network (principals) / OpenVibe.Codes | extract | W1/W20 |
| api_keys | server/db/schema.sql:391 | live.db | OpenVibe.Network (principals) / OpenVibe.Codes | extract | W1/W20 |
| api_tokens | server/db/schema.sql:404 | live.db | OpenVibe.Network (principals) / OpenVibe.Codes | extract | W1/W20 |
| api_tokens | server/db/schema.sql:404 | live.db | OpenVibe.Network (principals) / OpenVibe.Codes | extract | W1/W20 |
-| app_state | server/db/database.js:1167 | live.db | OpenVibe.Live | keep | - |
-| approved_ips | server/db/database.js:2075 | live.db | OpenVibe.Network (policy) | extract | W1 |
+| app_state | server/db/database.js:1171 | live.db | OpenVibe.Live | keep | - |
+| approved_ips | server/db/database.js:2079 | live.db | OpenVibe.Network (policy) | extract | W1 |
| arena_achievements | (prod only) | live.db | archive then drop | investigate | W0 |
| arena_achievements | (prod only) | live.db | archive then drop | investigate | W0 |
| arena_battles | (prod only) | live.db | archive then drop | investigate | W0 |
| arena_battles | (prod only) | live.db | archive then drop | investigate | W0 |
| arena_beef_hype | server/arena/beef.js:58 | live.db | OpenVibe.Live | keep | - |
| arena_beef_hype | server/arena/beef.js:58 | live.db | OpenVibe.Live | keep | - |
@@ -87,19 +87,19 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -87,19 +87,19 @@ Deliverable 2: every table declared in code or present in production, with curre
| canvas_tiles | (prod only) | live.db | OpenVibe.Games | frozen-legacy | W12 |
| canvas_tiles | (prod only) | live.db | OpenVibe.Games | frozen-legacy | W12 |
| canvas_user_overrides | (prod only) | live.db | OpenVibe.Games | frozen-legacy | W12 |
| canvas_user_overrides | (prod only) | live.db | OpenVibe.Games | frozen-legacy | W12 |
| changelog_entries | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| changelog_entries | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| channel_ai_bots | server/db/database.js:1828 | live.db | OpenVibe.AI | extract | W13 |
-| channel_ai_config | server/db/database.js:1852 | live.db | OpenVibe.AI | extract | W13 |
-| channel_moderation_settings | server/db/database.js:1638, server/db/schema.sql:514 | live.db | OpenVibe.Chat | extract | W6 |
-| channel_moderators | server/db/database.js:1621, server/db/schema.sql:499 | live.db | OpenVibe.Chat | extract | W6 |
-| channel_points | server/db/database.js:760 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
-| channel_sounds | server/db/database.js:1741, server/db/schema.sql:625 | live.db | OpenVibe.Chat | extract | W6 |
-| channel_sounds_new | server/db/database.js:1765 | no | OpenVibe.Chat | extract | W6 |
+| channel_ai_bots | server/db/database.js:1832 | live.db | OpenVibe.AI | extract | W13 |
+| channel_ai_config | server/db/database.js:1856 | live.db | OpenVibe.AI | extract | W13 |
+| channel_moderation_settings | server/db/database.js:1642, server/db/schema.sql:514 | live.db | OpenVibe.Chat | extract | W6 |
+| channel_moderators | server/db/database.js:1625, server/db/schema.sql:499 | live.db | OpenVibe.Chat | extract | W6 |
+| channel_points | server/db/database.js:764 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
+| channel_sounds | server/db/database.js:1745, server/db/schema.sql:625 | live.db | OpenVibe.Chat | extract | W6 |
+| channel_sounds_new | server/db/database.js:1769 | no | OpenVibe.Chat | extract | W6 |
| channels | server/db/schema.sql:26 | live.db | OpenVibe.Live | keep | - |
| channels | server/db/schema.sql:26 | live.db | OpenVibe.Live | keep | - |
-| chat_ai_summaries | server/db/database.js:1308 | live.db | OpenVibe.Chat | extract | W6 |
+| chat_ai_summaries | server/db/database.js:1312 | live.db | OpenVibe.Chat | extract | W6 |
| chat_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| chat_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| chat_messages | server/db/schema.sql:148 | live.db | OpenVibe.Chat | extract | W6 |
| chat_messages | server/db/schema.sql:148 | live.db | OpenVibe.Chat | extract | W6 |
-| chat_messages_new | server/db/database.js:415 | no | OpenVibe.Chat | extract | W6 |
-| chat_timeline_events | server/db/database.js:1328 | live.db | OpenVibe.Chat | extract | W6 |
+| chat_messages_new | server/db/database.js:419 | no | OpenVibe.Chat | extract | W6 |
+| chat_timeline_events | server/db/database.js:1332 | live.db | OpenVibe.Chat | extract | W6 |
| chatter_profiles | (prod only) | live.db | archive then drop | investigate | W0 |
| chatter_profiles | (prod only) | live.db | archive then drop | investigate | W0 |
| chatter_subjects | (prod only) | live.db | archive then drop | investigate | W0 |
| chatter_subjects | (prod only) | live.db | archive then drop | investigate | W0 |
| chatter_xp_log | (prod only) | live.db | archive then drop | investigate | W0 |
| chatter_xp_log | (prod only) | live.db | archive then drop | investigate | W0 |
@@ -108,11 +108,11 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -108,11 +108,11 @@ Deliverable 2: every table declared in code or present in production, with curre
| coin_redemptions | server/db/schema.sql:689 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| coin_redemptions | server/db/schema.sql:689 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| coin_rewards | server/db/schema.sql:668 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| coin_rewards | server/db/schema.sql:668 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| coin_transactions | server/db/schema.sql:651 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| coin_transactions | server/db/schema.sql:651 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
-| comments | server/db/database.js:849, server/db/schema.sql:585 | live.db | OpenVibe.Community | extract | W5 |
+| comments | server/db/database.js:853, server/db/schema.sql:585 | live.db | OpenVibe.Community | extract | W5 |
| content_views | server/db/schema.sql:328 | live.db | OpenVibe.Live | keep | - |
| content_views | server/db/schema.sql:328 | live.db | OpenVibe.Live | keep | - |
-| control_config_buttons | server/db/database.js:2306 | live.db | OpenRe.Stream | extract | W7 |
-| control_configs | server/db/database.js:2292 | live.db | OpenRe.Stream | extract | W7 |
-| control_whitelist | server/db/database.js:2277 | live.db | OpenRe.Stream | extract | W7 |
+| control_config_buttons | server/db/database.js:2310 | live.db | OpenRe.Stream | extract | W7 |
+| control_configs | server/db/database.js:2296 | live.db | OpenRe.Stream | extract | W7 |
+| control_whitelist | server/db/database.js:2281 | live.db | OpenRe.Stream | extract | W7 |
| custom_rewards | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| custom_rewards | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| daily_claims | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| daily_claims | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| divorce_history | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| divorce_history | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
@@ -122,9 +122,9 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -122,9 +122,9 @@ Deliverable 2: every table declared in code or present in production, with curre
| dm_participants | server/chat/dm.js:31 | live.db | OpenVibe.Chat | extract | W6 |
| dm_participants | server/chat/dm.js:31 | live.db | OpenVibe.Chat | extract | W6 |
| donation_goals | server/db/schema.sql:264 | live.db | OpenVibe.Tips | extract | W9 |
| donation_goals | server/db/schema.sql:264 | live.db | OpenVibe.Tips | extract | W9 |
| dungeon_stats | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| dungeon_stats | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| easter_egg_solves | server/db/database.js:1340 | live.db | OpenVibe.AI | extract | W13 |
+| easter_egg_solves | server/db/database.js:1344 | live.db | OpenVibe.AI | extract | W13 |
| emotes | server/db/schema.sql:603 | live.db | OpenVibe.Chat | extract | W6 |
| emotes | server/db/schema.sql:603 | live.db | OpenVibe.Chat | extract | W6 |
-| emotes_new | server/db/database.js:1709 | no | OpenVibe.Chat | extract | W6 |
+| emotes_new | server/db/database.js:1713 | no | OpenVibe.Chat | extract | W6 |
| event_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| event_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| farm_plots | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| farm_plots | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| file_checksums | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| file_checksums | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
@@ -146,55 +146,55 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -146,55 +146,55 @@ Deliverable 2: every table declared in code or present in production, with curre
| game_structures | server/game/schema.sql:87 | live.db | OpenVibe.Games | migrate-then-drop | W12 |
| game_structures | server/game/schema.sql:87 | live.db | OpenVibe.Games | migrate-then-drop | W12 |
| game_world_state | server/game/schema.sql:7 | live.db | OpenVibe.Games | migrate-then-drop | W12 |
| game_world_state | server/game/schema.sql:7 | live.db | OpenVibe.Games | migrate-then-drop | W12 |
| gusher_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| gusher_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| hidden_relay_users | server/db/database.js:2112 | live.db | OpenVibe.Chat | extract | W6 |
+| hidden_relay_users | server/db/database.js:2116 | live.db | OpenVibe.Chat | extract | W6 |
| inventory | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| inventory | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| ip_log | server/db/database.js:2051 | live.db | OpenVibe.Network (policy) | extract | W1 |
+| ip_log | server/db/database.js:2055 | live.db | OpenVibe.Network (policy) | extract | W1 |
| jo_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| jo_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| kick_channel_cache | server/db/database.js:774 | live.db | OpenRe.Stream | extract | W7 |
+| kick_channel_cache | server/db/database.js:778 | live.db | OpenRe.Stream | extract | W7 |
| linked_accounts | server/db/database.js:384 | live.db | OpenVibe.Network | extract | W1 |
| linked_accounts | server/db/database.js:384 | live.db | OpenVibe.Network | extract | W1 |
| love_affinity | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| love_affinity | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| love_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| love_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| love_proposals | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| love_proposals | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| managed_streams | server/db/database.js:2420, server/db/schema.sql:78 | live.db | OpenRe.Stream | extract | W7 |
-| media_request_settings | server/db/database.js:869, server/db/schema.sql:722 | live.db | OpenVibe.Chat | extract | W6 |
-| media_requests | server/db/database.js:883, server/db/schema.sql:739 | live.db, rs-companion.db | OpenVibe.Chat | extract | W6 |
+| managed_streams | server/db/database.js:2424, server/db/schema.sql:78 | live.db | OpenRe.Stream | extract | W7 |
+| media_request_settings | server/db/database.js:873, server/db/schema.sql:722 | live.db | OpenVibe.Chat | extract | W6 |
+| media_requests | server/db/database.js:887, server/db/schema.sql:739 | live.db, rs-companion.db | OpenVibe.Chat | extract | W6 |
| mine_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| mine_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| mod_persuasion | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| mod_persuasion | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| moderation_actions | server/db/database.js:1920 | live.db | OpenVibe.Chat | extract | W6 |
+| moderation_actions | server/db/database.js:1924 | live.db | OpenVibe.Chat | extract | W6 |
| music_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| music_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| news_settings | server/news/news-service.js:47 | live.db | OpenVibe.Live | keep | - |
| news_settings | server/news/news-service.js:47 | live.db | OpenVibe.Live | keep | - |
-| paste_comments | server/db/database.js:2008 | live.db | OpenVibe.Community | frozen-legacy | W5 |
-| paste_likes | server/db/database.js:1976 | live.db | OpenVibe.Community | frozen-legacy | W5 |
-| pastes | server/db/database.js:1939 | live.db | OpenVibe.Community | frozen-legacy | W5 |
-| payment_orders | server/db/database.js:1588 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |
-| pending_ip_messages | server/db/database.js:2092 | live.db | OpenVibe.Chat | extract | W6 |
-| platform_connections | server/db/database.js:709 | live.db | OpenRe.Stream | extract | W7 |
-| powerchat_connections | server/db/database.js:731 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |
-| powerchat_webhook_deliveries | server/db/database.js:748 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |
+| paste_comments | server/db/database.js:2012 | live.db | OpenVibe.Community | frozen-legacy | W5 |
+| paste_likes | server/db/database.js:1980 | live.db | OpenVibe.Community | frozen-legacy | W5 |
+| pastes | server/db/database.js:1943 | live.db | OpenVibe.Community | frozen-legacy | W5 |
+| payment_orders | server/db/database.js:1592 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |
+| pending_ip_messages | server/db/database.js:2096 | live.db | OpenVibe.Chat | extract | W6 |
+| platform_connections | server/db/database.js:713 | live.db | OpenRe.Stream | extract | W7 |
+| powerchat_connections | server/db/database.js:735 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |
+| powerchat_webhook_deliveries | server/db/database.js:752 | live.db | OpenVibe.Live | keep | W3 (deliveries -> Events) |
| promo_claims | (prod only) | live.db | archive then drop | investigate | W0 |
| promo_claims | (prod only) | live.db | archive then drop | investigate | W0 |
-| relay_users | server/db/database.js:1466 | live.db | OpenVibe.Chat | extract | W6 |
-| restream_destinations | server/db/database.js:691 | live.db | OpenRe.Stream | extract | W7 |
+| relay_users | server/db/database.js:1470 | live.db | OpenVibe.Chat | extract | W6 |
+| restream_destinations | server/db/database.js:695 | live.db | OpenRe.Stream | extract | W7 |
| roast_dossier | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| roast_dossier | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| roast_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| roast_log | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-| robotstreamer_integrations | server/db/database.js:605, server/db/schema.sql:58 | live.db | OpenRe.Stream | extract | W7 |
-| robotstreamer_integrations_new | server/db/database.js:656 | no | OpenRe.Stream | extract | W7 |
+| robotstreamer_integrations | server/db/database.js:609, server/db/schema.sql:58 | live.db | OpenRe.Stream | extract | W7 |
+| robotstreamer_integrations_new | server/db/database.js:660 | no | OpenRe.Stream | extract | W7 |
| schema_migrations | server/db/migrations.js:27 | live.db | OpenVibe.Live | keep | - |
| schema_migrations | server/db/migrations.js:27 | live.db | OpenVibe.Live | keep | - |
| site_settings | server/db/database.js:353, server/db/schema.sql:556 | live.db | OpenVibe.Live | keep | - |
| site_settings | server/db/database.js:353, server/db/schema.sql:556 | live.db | OpenVibe.Live | keep | - |
| stream_analytics | server/db/schema.sql:810 | live.db | OpenVibe.Live | keep | - |
| stream_analytics | server/db/schema.sql:810 | live.db | OpenVibe.Live | keep | - |
| stream_controls | server/db/schema.sql:372 | live.db | OpenRe.Stream | extract | W7 |
| stream_controls | server/db/schema.sql:372 | live.db | OpenRe.Stream | extract | W7 |
-| stream_controls_new | server/db/database.js:2385 | no | OpenRe.Stream | extract | W7 |
-| stream_first_chats | server/db/database.js:2040 | live.db | OpenVibe.Chat | extract | W6 |
-| stream_memories | server/db/database.js:1181 | live.db | OpenVibe.AI | extract | W13 |
+| stream_controls_new | server/db/database.js:2389 | no | OpenRe.Stream | extract | W7 |
+| stream_first_chats | server/db/database.js:2044 | live.db | OpenVibe.Chat | extract | W6 |
+| stream_memories | server/db/database.js:1185 | live.db | OpenVibe.AI | extract | W13 |
| stream_recaps | server/recap/recap.js:27 | live.db | OpenVibe.AI | extract | W13 |
| stream_recaps | server/recap/recap.js:27 | live.db | OpenVibe.AI | extract | W13 |
-| stream_timeline_events | server/db/database.js:1229 | live.db | OpenVibe.Live | keep | - |
-| streamer_overviews | server/db/database.js:1274 | live.db | OpenVibe.AI | extract | W13 |
+| stream_timeline_events | server/db/database.js:1233 | live.db | OpenVibe.Live | keep | - |
+| streamer_overviews | server/db/database.js:1278 | live.db | OpenVibe.AI | extract | W13 |
| streams | server/db/schema.sql:103 | live.db | OpenVibe.Live | keep | - |
| streams | server/db/schema.sql:103 | live.db | OpenVibe.Live | keep | - |
| subscriptions | server/db/schema.sql:234 | live.db | OpenVibe.Billing + OpenVibe.VIP | extract | W8/W10 |
| subscriptions | server/db/schema.sql:234 | live.db | OpenVibe.Billing + OpenVibe.VIP | extract | W8/W10 |
| tag_guardian_defeats | server/game/tags.js:81 | live.db | OpenVibe.Live | keep | - |
| tag_guardian_defeats | server/game/tags.js:81 | live.db | OpenVibe.Live | keep | - |
| themes | server/db/schema.sql:446 | live.db | OpenVibe.Network | extract | W1 |
| themes | server/db/schema.sql:446 | live.db | OpenVibe.Network | extract | W1 |
| transactions | server/db/schema.sql:247 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |
| transactions | server/db/schema.sql:247 | live.db | OpenVibe.Billing | extract | W8 (after ADR-012) |
-| translations | server/db/database.js:506, server/i18n/translate.js:145 | live.db | OpenVibe.AI | extract | W13 |
-| tts_voice_overrides | server/db/database.js:1352 | live.db | OpenVibe.Chat | extract | W6 |
+| translations | server/db/database.js:510, server/i18n/translate.js:145 | live.db | OpenVibe.AI | extract | W13 |
+| tts_voice_overrides | server/db/database.js:1356 | live.db | OpenVibe.Chat | extract | W6 |
| unlocked_recipes | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| unlocked_recipes | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| user_cosmetics | server/db/schema.sql:774, server/monetization/cosmetics.js:109 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| user_cosmetics | server/db/schema.sql:774, server/monetization/cosmetics.js:109 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| user_equipped | server/db/schema.sql:786, server/monetization/cosmetics.js:118 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| user_equipped | server/db/schema.sql:786, server/monetization/cosmetics.js:118 | live.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
@@ -206,9 +206,9 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -206,9 +206,9 @@ Deliverable 2: every table declared in code or present in production, with curre
| user_voices | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| user_voices | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| users | server/db/schema.sql:5 | live.db, rs-companion.db | OpenVibe.Network | extract | W1 |
| users | server/db/schema.sql:5 | live.db, rs-companion.db | OpenVibe.Network | extract | W1 |
| verification_keys | server/db/database.js:364, server/db/schema.sql:567 | live.db | OpenVibe.Network | extract | W1 |
| verification_keys | server/db/database.js:364, server/db/schema.sql:567 | live.db | OpenVibe.Network | extract | W1 |
-| vibe_coding_events | server/db/database.js:2677, server/db/schema.sql:198 | live.db | OpenVibe.Codes | extract | W20 |
-| vibe_coding_sessions | server/db/database.js:2642, server/db/schema.sql:170 | live.db | OpenVibe.Codes | extract | W20 |
-| viewer_samples | server/db/database.js:3956 | live.db | OpenVibe.Live | keep | - |
+| vibe_coding_events | server/db/database.js:2681, server/db/schema.sql:198 | live.db | OpenVibe.Codes | extract | W20 |
+| vibe_coding_sessions | server/db/database.js:2646, server/db/schema.sql:170 | live.db | OpenVibe.Codes | extract | W20 |
+| viewer_samples | server/db/database.js:3960 | live.db | OpenVibe.Live | keep | - |
| viewer_snapshots | server/db/schema.sql:799 | live.db | OpenVibe.Live | keep | - |
| viewer_snapshots | server/db/schema.sql:799 | live.db | OpenVibe.Live | keep | - |
| vod_ai_state | server/db/database.js:263 | live.db | OpenVibe.AI | extract | W13 |
| vod_ai_state | server/db/database.js:263 | live.db | OpenVibe.AI | extract | W13 |
| vods | server/db/schema.sql:280 | live.db | OpenVibe.Media | frozen-legacy | W4 |
| vods | server/db/schema.sql:280 | live.db | OpenVibe.Media | frozen-legacy | W4 |
@@ -216,7 +216,7 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -216,7 +216,7 @@ Deliverable 2: every table declared in code or present in production, with curre
| watch_time | server/db/schema.sql:706 | live.db | OpenVibe.Live | keep | - |
| watch_time | server/db/schema.sql:706 | live.db | OpenVibe.Live | keep | - |
| woodcut_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
| woodcut_profile | (prod only) | rs-companion.db | OpenVibe.Games (import source) | frozen-legacy | W12 |
-## OpenVibe.Network (35)
+## OpenVibe.Network (36)
| Table | Declared at | In prod | Target owner | Disposition | Wave |
| Table | Declared at | In prod | Target owner | Disposition | Wave |
|---|---|---|---|---|---|
|---|---|---|---|---|---|
@@ -232,8 +232,9 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -232,8 +232,9 @@ Deliverable 2: every table declared in code or present in production, with curre
| chrome_hits | server/chrome/service.js:29 | network.db | OpenVibe.Network | keep | W1 (module split) |
| chrome_hits | server/chrome/service.js:29 | network.db | OpenVibe.Network | keep | W1 (module split) |
| coin_transactions | server/db/database.js:407 | network.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| coin_transactions | server/db/database.js:407 | network.db | OpenVibe.Billing (loyalty ledger) | extract | W8 (after ADR-012) |
| email_delivery_log | server/db/database.js:302 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |
| email_delivery_log | server/db/database.js:302 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |
-| email_verification_tokens | server/db/database.js:506 | network.db | OpenVibe.Network | keep | W1 (module split) |
+| email_verification_tokens | server/db/database.js:509 | network.db | OpenVibe.Network | keep | W1 (module split) |
| follows | server/db/database.js:386 | network.db | OpenVibe.Network | keep | W1 (module split) |
| follows | server/db/database.js:386 | network.db | OpenVibe.Network | keep | W1 (module split) |
+| identity_legacy_map | server/identity/subjects.js:25 | network.db | OpenVibe.Network | keep | W1 (module split) |
| ip_log | server/db/database.js:225 | network.db | OpenVibe.Network | keep | W1 (module split) |
| ip_log | server/db/database.js:225 | network.db | OpenVibe.Network | keep | W1 (module split) |
| linked_accounts | server/db/database.js:204 | network.db | OpenVibe.Network | keep | W1 (module split) |
| linked_accounts | server/db/database.js:204 | network.db | OpenVibe.Network | keep | W1 (module split) |
| notification_preferences | server/db/database.js:290 | network.db | OpenVibe.Network | keep | W1 (module split) |
| notification_preferences | server/db/database.js:290 | network.db | OpenVibe.Network | keep | W1 (module split) |
@@ -244,7 +245,7 @@ Deliverable 2: every table declared in code or present in production, with curre
@@ -244,7 +245,7 @@ Deliverable 2: every table declared in code or present in production, with curre
| password_reset_tokens | server/db/database.js:321 | network.db | OpenVibe.Network | keep | W1 (module split) |
| password_reset_tokens | server/db/database.js:321 | network.db | OpenVibe.Network | keep | W1 (module split) |
| push_subscriptions | server/db/database.js:460 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |
| push_subscriptions | server/db/database.js:460 | network.db | OpenVibe.Network | keep | W3 (delivery -> Events outbox) |
| site_settings | server/db/database.js:238 | network.db | OpenVibe.Network | keep | - |
| site_settings | server/db/database.js:238 | network.db | OpenVibe.Network | keep | - |
-| stream_live_announcements | server/internal/routes.js:300 | network.db | OpenVibe.Events | extract | W3 |
+| stream_live_announcements | server/internal/routes.js:310 | network.db | OpenVibe.Events | extract | W3 |
| themes | server/db/database.js:183 | network.db | OpenVibe.Network | keep | W1 (module split) |
| themes | server/db/database.js:183 | network.db | OpenVibe.Network | keep | W1 (module split) |
| tool_domains | server/domains/routes.js:44 | network.db | OpenVibe.Network | keep | W1 (module split) |
| tool_domains | server/domains/routes.js:44 | network.db | OpenVibe.Network | keep | W1 (module split) |
| url_registry | server/db/database.js:245, server/url-registry.js:7 | network.db | OpenVibe.Network | keep | W1 (module split) |
| url_registry | server/db/database.js:245, server/url-registry.js:7 | network.db | OpenVibe.Network | keep | W1 (module split) |
@@ -9,7 +9,7 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
@@ -9,7 +9,7 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
| Repo | Routes | GET | POST | PUT/PATCH | DELETE | Other | /internal/* |
| Repo | Routes | GET | POST | PUT/PATCH | DELETE | Other | /internal/* |
|---|---|---|---|---|---|---|---|
|---|---|---|---|---|---|---|---|
| OpenVibe.Live | 532 | 274 | 160 | 50 | 47 | 1 | 6 |
| OpenVibe.Live | 532 | 274 | 160 | 50 | 47 | 1 | 6 |
-| OpenVibe.Network | 185 | 80 | 69 | 22 | 14 | 0 | 25 |
+| OpenVibe.Network | 187 | 81 | 70 | 22 | 14 | 0 | 27 |
| OpenVibe.Media | 67 | 28 | 27 | 4 | 8 | 0 | 1 |
| OpenVibe.Media | 67 | 28 | 27 | 4 | 8 | 0 | 1 |
| OpenVibe.Tools | 99 | 84 | 12 | 0 | 2 | 1 | 0 |
| OpenVibe.Tools | 99 | 84 | 12 | 0 | 2 | 1 | 0 |
| OpenVibe.Community | 22 | 19 | 3 | 0 | 0 | 0 | 0 |
| OpenVibe.Community | 22 | 19 | 3 | 0 | 0 | 0 | 0 |
@@ -574,12 +574,12 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
@@ -574,12 +574,12 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
| GET | /api/admin/domains/catalog | server/domains/routes.js:206 |
| GET | /api/admin/domains/catalog | server/domains/routes.js:206 |
| POST | /api/admin/domains/check | server/domains/routes.js:217 |
| POST | /api/admin/domains/check | server/domains/routes.js:217 |
| GET | /api/admin/ssh-info | server/index.js:452 |
| GET | /api/admin/ssh-info | server/index.js:452 |
-| GET | /api/auth/anon-identities | server/auth/routes.js:635 |
-| POST | /api/auth/anon-session | server/auth/routes.js:512 |
-| GET | /api/auth/anon/:token | server/auth/routes.js:582 |
-| POST | /api/auth/anon/:token/link | server/auth/routes.js:619 |
-| PUT | /api/auth/anon/:token/preferences | server/auth/routes.js:596 |
-| POST | /api/auth/change-password | server/auth/routes.js:422 |
+| GET | /api/auth/anon-identities | server/auth/routes.js:638 |
+| POST | /api/auth/anon-session | server/auth/routes.js:515 |
+| GET | /api/auth/anon/:token | server/auth/routes.js:585 |
+| POST | /api/auth/anon/:token/link | server/auth/routes.js:622 |
+| PUT | /api/auth/anon/:token/preferences | server/auth/routes.js:599 |
+| POST | /api/auth/change-password | server/auth/routes.js:425 |
| GET | /api/auth/discord/callback | server/auth/discord-link.js:61 |
| GET | /api/auth/discord/callback | server/auth/discord-link.js:61 |
| DELETE | /api/auth/discord/link | server/auth/discord-link.js:158 |
| DELETE | /api/auth/discord/link | server/auth/discord-link.js:158 |
| GET | /api/auth/discord/link | server/auth/discord-link.js:31 |
| GET | /api/auth/discord/link | server/auth/discord-link.js:31 |
@@ -587,22 +587,22 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
@@ -587,22 +587,22 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
| POST | /api/auth/email/send-verification | server/auth/email-verify.js:99 |
| POST | /api/auth/email/send-verification | server/auth/email-verify.js:99 |
| GET | /api/auth/email/status | server/auth/email-verify.js:83 |
| GET | /api/auth/email/status | server/auth/email-verify.js:83 |
| POST | /api/auth/email/verify | server/auth/email-verify.js:122 |
| POST | /api/auth/email/verify | server/auth/email-verify.js:122 |
-| POST | /api/auth/forgot-password | server/auth/routes.js:206 |
-| POST | /api/auth/login | server/auth/routes.js:183 |
-| POST | /api/auth/logout | server/auth/routes.js:506 |
-| GET | /api/auth/me | server/auth/routes.js:362 |
-| PUT | /api/auth/profile | server/auth/routes.js:372 |
-| POST | /api/auth/refresh | server/auth/routes.js:300 |
-| POST | /api/auth/register | server/auth/routes.js:88 |
-| POST | /api/auth/reset-password | server/auth/routes.js:254 |
-| GET | /api/auth/reset-password/validate | server/auth/routes.js:238 |
-| DELETE | /api/auth/sessions | server/auth/routes.js:717 |
-| GET | /api/auth/sessions | server/auth/routes.js:673 |
-| POST | /api/auth/sessions | server/auth/routes.js:686 |
-| DELETE | /api/auth/sessions/:id | server/auth/routes.js:708 |
-| GET | /api/auth/users/:id/card | server/auth/routes.js:728 |
-| DELETE | /api/auth/users/:id/follow | server/auth/routes.js:811 |
-| POST | /api/auth/users/:id/follow | server/auth/routes.js:780 |
+| POST | /api/auth/forgot-password | server/auth/routes.js:208 |
+| POST | /api/auth/login | server/auth/routes.js:185 |
+| POST | /api/auth/logout | server/auth/routes.js:509 |
+| GET | /api/auth/me | server/auth/routes.js:364 |
+| PUT | /api/auth/profile | server/auth/routes.js:375 |
+| POST | /api/auth/refresh | server/auth/routes.js:302 |
+| POST | /api/auth/register | server/auth/routes.js:90 |
+| POST | /api/auth/reset-password | server/auth/routes.js:256 |
+| GET | /api/auth/reset-password/validate | server/auth/routes.js:240 |
+| DELETE | /api/auth/sessions | server/auth/routes.js:720 |
+| GET | /api/auth/sessions | server/auth/routes.js:676 |
+| POST | /api/auth/sessions | server/auth/routes.js:689 |
+| DELETE | /api/auth/sessions/:id | server/auth/routes.js:711 |
+| GET | /api/auth/users/:id/card | server/auth/routes.js:731 |
+| DELETE | /api/auth/users/:id/follow | server/auth/routes.js:814 |
+| POST | /api/auth/users/:id/follow | server/auth/routes.js:783 |
| GET | /api/brand | server/index.js:373 |
| GET | /api/brand | server/index.js:373 |
| GET | /api/catalog.json | server/index.js:423 |
| GET | /api/catalog.json | server/index.js:423 |
| GET | /api/chrome | server/chrome/service.js:137 |
| GET | /api/chrome | server/chrome/service.js:137 |
@@ -664,31 +664,33 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
@@ -664,31 +664,33 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
| POST | /fedcm/disconnect | server/auth/fedcm.js:142 |
| POST | /fedcm/disconnect | server/auth/fedcm.js:142 |
| GET | /health | server/admin/routes.js:766 |
| GET | /health | server/admin/routes.js:766 |
| POST | /identity | server/setup/routes.js:152 |
| POST | /identity | server/setup/routes.js:152 |
-| GET | /internal/anon-admin | server/internal/routes.js:618 |
-| GET | /internal/anon-list | server/internal/routes.js:667 |
-| POST | /internal/audit | server/internal/routes.js:156 |
-| POST | /internal/coins/credit | server/internal/routes.js:242 |
-| POST | /internal/coins/debit | server/internal/routes.js:254 |
-| GET | /internal/coins/stats | server/internal/routes.js:204 |
-| POST | /internal/coins/transfer | server/internal/routes.js:267 |
-| POST | /internal/events/stream-live | server/internal/routes.js:284 |
-| POST | /internal/issue-token | server/internal/routes.js:508 |
-| POST | /internal/link-account | server/internal/routes.js:107 |
-| POST | /internal/notifications/mark-read | server/internal/routes.js:469 |
-| POST | /internal/notifications/push | server/internal/routes.js:411 |
-| POST | /internal/notifications/push-bulk | server/internal/routes.js:431 |
-| POST | /internal/notifications/resolve-users | server/internal/routes.js:488 |
-| GET | /internal/notifications/unread/:userId | server/internal/routes.js:454 |
-| POST | /internal/resolve-anon | server/internal/routes.js:539 |
-| GET | /internal/stats | server/internal/routes.js:165 |
-| GET | /internal/url-registry/resolved | server/internal/routes.js:174 |
-| POST | /internal/user-avatar | server/internal/routes.js:141 |
-| GET | /internal/users/:id | server/internal/routes.js:58 |
-| GET | /internal/users/:id/linked-accounts | server/internal/routes.js:149 |
-| GET | /internal/users/:id/theme | server/internal/routes.js:95 |
-| POST | /internal/users/bulk | server/internal/routes.js:80 |
-| GET | /internal/users/by-username/:username | server/internal/routes.js:69 |
-| POST | /internal/verify-token | server/internal/routes.js:36 |
+| GET | /internal/anon-admin | server/internal/routes.js:628 |
+| GET | /internal/anon-list | server/internal/routes.js:677 |
+| POST | /internal/audit | server/internal/routes.js:166 |
+| POST | /internal/coins/credit | server/internal/routes.js:252 |
+| POST | /internal/coins/debit | server/internal/routes.js:264 |
+| GET | /internal/coins/stats | server/internal/routes.js:214 |
+| POST | /internal/coins/transfer | server/internal/routes.js:277 |
+| POST | /internal/events/stream-live | server/internal/routes.js:294 |
+| POST | /internal/identity/legacy-map | server/identity/internal-routes.js:29 |
+| GET | /internal/identity/resolve | server/identity/internal-routes.js:18 |
+| POST | /internal/issue-token | server/internal/routes.js:518 |
+| POST | /internal/link-account | server/internal/routes.js:108 |
+| POST | /internal/notifications/mark-read | server/internal/routes.js:479 |
+| POST | /internal/notifications/push | server/internal/routes.js:421 |
+| POST | /internal/notifications/push-bulk | server/internal/routes.js:441 |
+| POST | /internal/notifications/resolve-users | server/internal/routes.js:498 |
+| GET | /internal/notifications/unread/:userId | server/internal/routes.js:464 |
+| POST | /internal/resolve-anon | server/internal/routes.js:549 |
+| GET | /internal/stats | server/internal/routes.js:175 |
+| GET | /internal/url-registry/resolved | server/internal/routes.js:184 |
+| POST | /internal/user-avatar | server/internal/routes.js:151 |
+| GET | /internal/users/:id | server/internal/routes.js:59 |
+| GET | /internal/users/:id/linked-accounts | server/internal/routes.js:159 |
+| GET | /internal/users/:id/theme | server/internal/routes.js:96 |
+| POST | /internal/users/bulk | server/internal/routes.js:81 |
+| GET | /internal/users/by-username/:username | server/internal/routes.js:70 |
+| POST | /internal/verify-token | server/internal/routes.js:37 |
| GET | /llms.txt | server/index.js:550 |
| GET | /llms.txt | server/index.js:550 |
| GET | /me | server/coins/routes.js:18 |
| GET | /me | server/coins/routes.js:18 |
| GET | /me/history | server/coins/routes.js:24 |
| GET | /me/history | server/coins/routes.js:24 |
@@ -700,10 +702,10 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
@@ -700,10 +702,10 @@ Deliverable 3 (routes half). Paths include the prefix of the `app.use()` mount t
| GET | /nginx/preview/:serviceId | server/deploy/routes.js:314 |
| GET | /nginx/preview/:serviceId | server/deploy/routes.js:314 |
| POST | /nginx/reload | server/deploy/routes.js:382 |
| POST | /nginx/reload | server/deploy/routes.js:382 |
| POST | /nginx/validate | server/deploy/routes.js:330 |
| POST | /nginx/validate | server/deploy/routes.js:330 |
-| GET | /oauth/.well-known/openid-configuration | server/auth/oauth-routes.js:304 |
-| GET | /oauth/authorize | server/auth/oauth-routes.js:20 |
-| POST | /oauth/confirm | server/auth/oauth-routes.js:78 |
-| POST | /oauth/token | server/auth/oauth-routes.js:131 |
+| GET | /oauth/.well-known/openid-configuration | server/auth/oauth-routes.js:306 |
+| GET | /oauth/authorize | server/auth/oauth-routes.js:21 |
+| POST | /oauth/confirm | server/auth/oauth-routes.js:79 |
+| POST | /oauth/token | server/auth/oauth-routes.js:132 |
| GET | /openvibe-sw.js | server/index.js:596 |
| GET | /openvibe-sw.js | server/index.js:596 |
| GET | /overview | server/admin/analytics-routes.js:75 |
| GET | /overview | server/admin/analytics-routes.js:75 |
| GET | /preferences | server/notifications/routes.js:121 |
| GET | /preferences | server/notifications/routes.js:121 |
@@ -9,7 +9,7 @@ Deliverable 6. Current owner = the repo that creates the table; target owner = r
@@ -9,7 +9,7 @@ Deliverable 6. Current owner = the repo that creates the table; target owner = r
| Current owner | Tables | Stay | Move | Frozen legacy | Investigate |
| Current owner | Tables | Stay | Move | Frozen legacy | Investigate |
|---|---|---|---|---|---|
|---|---|---|---|---|---|
| OpenVibe.Live | 186 | 26 | 94 | 43 | 23 |
| OpenVibe.Live | 186 | 26 | 94 | 43 | 23 |
-| OpenVibe.Network | 35 | 32 | 3 | 0 | 0 |
+| OpenVibe.Network | 36 | 33 | 3 | 0 | 0 |
| OpenVibe.Media | 15 | 12 | 3 | 0 | 0 |
| OpenVibe.Media | 15 | 12 | 3 | 0 | 0 |
| OpenVibe.Tools | 4 | 4 | 0 | 0 | 0 |
| OpenVibe.Tools | 4 | 4 | 0 | 0 | 0 |
| OpenVibe.Community | 4 | 4 | 0 | 0 | 0 |
| OpenVibe.Community | 4 | 4 | 0 | 0 | 0 |
@@ -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.
-Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-22 20:43 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.
+Deliverable 7. Snapshot of openvibe-oregon taken 2026-09-22 21:23 UTC compared with the local checkouts. `unknown` rows are things this environment cannot see.
| Severity | Area | Subject | Detail |
| Severity | Area | Subject | Detail |
|---|---|---|---|
|---|---|---|---|
@@ -7,7 +7,7 @@ Deliverable 8. Family-level status from roadmap 3.2. Evidence paths are checked
@@ -7,7 +7,7 @@ Deliverable 8. Family-level status from roadmap 3.2. Evidence paths are checked
| IDs | Family | Status | Disposition | Wave | Evidence | Measured |
| IDs | Family | Status | Disposition | Wave | Evidence | Measured |
|---|---|---|---|---|---|---|
|---|---|---|---|---|---|---|
| D01 | Identity/account | partial | partial | W1 | Network/server/auth; Community/server/live-client.js | 7 Live tables target OpenVibe.Network |
| D01 | Identity/account | partial | partial | W1 | Network/server/auth; Community/server/live-client.js | 7 Live tables target OpenVibe.Network |
-| D02-D04 | Registry, capabilities, contracts | absent | missing | W1, W2 | Network/server/url-registry.js; Sites/sites.json | 21 charter-only repos of 32; Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0 |
+| D02-D04 | Registry, capabilities, contracts | absent | missing | W1, W2 | Network/server/url-registry.js; Sites/sites.json | 20 charter-only repos of 32; Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0 |
| D05-D06 | Policy, staff, user modules | partial | partial | W1, W2 | Network/server/admin; Live/server/auth/permissions.js | - |
| D05-D06 | Policy, staff, user modules | partial | partial | W1, W2 | Network/server/admin; Live/server/auth/permissions.js | - |
| D07-D10 | Themes, notifications, social, analytics | partial | partial | W1, W2, Track O | Network/server/themes; Network/server/notifications | 5 repos carry their own analytics_events |
| D07-D10 | Themes, notifications, social, analytics | partial | partial | W1, W2, Track O | Network/server/themes; Network/server/notifications | 5 repos carry their own analytics_events |
| D11-D13 | Events, realtime, SDK | absent | missing | W2, W3 | Media/server/webhooks.js | 65 caller-file/target pairs across 50 files; 10 WebSocket server constructions |
| D11-D13 | Events, realtime, SDK | absent | missing | W2, W3 | Media/server/webhooks.js | 65 caller-file/target pairs across 50 files; 10 WebSocket server constructions |
@@ -18,7 +18,7 @@ Deliverable 8. Family-level status from roadmap 3.2. Evidence paths are checked
@@ -18,7 +18,7 @@ Deliverable 8. Family-level status from roadmap 3.2. Evidence paths are checked
| D28-D30 | Billing, Tips, VIP | partial | partial | W8-W10 (ADR-012 first) | Live/server/monetization/payments.js; Network/server/coins | 2 Live tables target OpenVibe.Billing; 2 Network tables target OpenVibe.Billing (loyalty ledger) |
| D28-D30 | Billing, Tips, VIP | partial | partial | W8-W10 (ADR-012 first) | Live/server/monetization/payments.js; Network/server/coins | 2 Live tables target OpenVibe.Billing; 2 Network tables target OpenVibe.Billing (loyalty ledger) |
| D31 | Tools | built | already-present-and-verified | W11 | Tools/apps/gateway | 2 test files |
| D31 | Tools | built | already-present-and-verified | W11 | Tools/apps/gateway | 2 test files |
| D32 | Games | built | already-present-and-verified | W12 | Games/apps/server/src/net/sso.ts | 56 test files |
| D32 | Games | built | already-present-and-verified | W12 | Games/apps/server/src/net/sso.ts | 56 test files |
-| D33-D34 | Codes, Host | absent | missing | W20, W21 | - | 21 charter-only repos of 32 |
+| D33-D34 | Codes, Host | absent | missing | W20, W21 | - | 20 charter-only repos of 32 |
| D35-D38 | AI, content, sources, search | partial | partial | W13-W15 | Live/server/ai/moment-registry.js; Live/server/ai/llm.js | 14 Live tables target OpenVibe.AI |
| D35-D38 | AI, content, sources, search | partial | partial | W13-W15 | Live/server/ai/moment-registry.js; Live/server/ai/llm.js | 14 Live tables target OpenVibe.AI |
| D39 | Mods | absent | missing | W12, W21 | - | - |
| D39 | Mods | absent | missing | W12, W21 | - | - |
| D40 | Open developer services | absent | missing | W20, W21 | Live/server/integrations/powerchat-routes.js | 28 of 65 call sites authenticate with the shared internal key |
| D40 | Open developer services | absent | missing | W20, W21 | Live/server/integrations/powerchat-routes.js | 28 of 65 call sites authenticate with the shared internal key |
@@ -2,15 +2,15 @@
@@ -2,15 +2,15 @@
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 `e31e342`, Network `71be248`, Media `6114bc6`, Tools `0346edc`, Community `de947ea`, Games `5710287`, Sites `185014f`. Production snapshot: openvibe-oregon, 2026-09-22.
+Source commits: Live `24151bd`, Network `9b4e262`, Media `6114bc6`, Tools `0346edc`, Community `de947ea`, Games `5710287`, Sites `185014f`. Production snapshot: openvibe-oregon, 2026-09-22.
## Deliverables
## Deliverables
| # | Artifact | Contents |
| # | Artifact | Contents |
|---|---|---|
|---|---|---|
| 1 | [01-services.md](01-services.md) | services, ports, units, env files, repo state, GitHub census |
| 1 | [01-services.md](01-services.md) | services, ports, units, env files, repo state, GitHub census |
-| 2 | [02-schema.md](02-schema.md) | 249 tables with current/target owner |
-| 3 | [03-routes.md](03-routes.md), [04-cross-service.md](04-cross-service.md) | 926 routes; 65 cross-service call sites |
+| 2 | [02-schema.md](02-schema.md) | 250 tables with current/target owner |
+| 3 | [03-routes.md](03-routes.md), [04-cross-service.md](04-cross-service.md) | 928 routes; 65 cross-service call sites |
| 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 |
@@ -23,8 +23,8 @@ Source commits: Live `e31e342`, Network `71be248`, Media `6114bc6`, Tools `0346e
@@ -23,8 +23,8 @@ Source commits: Live `e31e342`, Network `71be248`, Media `6114bc6`, Tools `0346e
| | Criterion | Result |
| | Criterion | Result |
|---|---|---|
|---|---|---|
-| pass | Every table has an owner classification | 249 tables classified, 0 unclassified |
-| pass | Every route is attributed to a repo and source line | 926 routes; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix) |
+| pass | Every table has an owner classification | 250 tables classified, 0 unclassified |
+| pass | Every route is attributed to a repo and source line | 928 routes; 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 | 82 timers/jobs |
| pass | Every background job is listed with its location | 82 timers/jobs |
| pass | Every cross-service call records caller, callee, auth, timeout and retry | 65 call sites; 30 with no timeout detected |
| pass | Every cross-service call records caller, callee, auth, timeout and retry | 65 call sites; 30 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 |
@@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
{
{
"generatedFrom": {
"generatedFrom": {
- "OpenVibe.Live": "e31e3422db7e3846051aeeb07fa661b8812c123d",
- "OpenVibe.Network": "71be248264060ca6d30d083571928f9a10002688",
+ "OpenVibe.Live": "24151bdc12ffe6e6f2fbe8c3770327b2d1635a8a",
+ "OpenVibe.Network": "9b4e262cd8daf05ee2b6b92a06dabe70e2d42bc7",
"OpenVibe.Media": "6114bc61c466cd51335548d0ce87058df125c577",
"OpenVibe.Media": "6114bc61c466cd51335548d0ce87058df125c577",
"OpenVibe.Tools": "0346edc57fb9f588abcdea171a22a5ca33f772d2",
"OpenVibe.Tools": "0346edc57fb9f588abcdea171a22a5ca33f772d2",
"OpenVibe.Community": "de947ead2addce29d7f9b98f3d894075ca4e82f2",
"OpenVibe.Community": "de947ead2addce29d7f9b98f3d894075ca4e82f2",
@@ -10,7 +10,7 @@
@@ -10,7 +10,7 @@
},
},
"prodSnapshot": {
"prodSnapshot": {
"host": "openvibe-oregon",
"host": "openvibe-oregon",
- "collectedAt": "2026-09-22T20:43:28.028Z"
+ "collectedAt": "2026-09-22T21:23:31.121Z"
},
},
"repos": [
"repos": [
{
{
@@ -18,13 +18,13 @@
@@ -18,13 +18,13 @@
"service": "live",
"service": "live",
"present": true,
"present": true,
"git": {
"git": {
- "head": "e31e3422db7e3846051aeeb07fa661b8812c123d",
+ "head": "24151bdc12ffe6e6f2fbe8c3770327b2d1635a8a",
"branch": "main",
"branch": "main",
- "originMain": "e31e3422db7e3846051aeeb07fa661b8812c123d",
- "committedAt": "2026-09-21T12:34:30-07:00"
+ "originMain": "24151bdc12ffe6e6f2fbe8c3770327b2d1635a8a",
+ "committedAt": "2026-09-22T14:18:25-07:00"
},
},
- "sourceFiles": 164,
- "loc": 69622,
+ "sourceFiles": 165,
+ "loc": 69699,
"tables": [
"tables": [
{
{
"table": "arena_profiles",
"table": "arena_profiles",
@@ -125,319 +125,319 @@
@@ -125,319 +125,319 @@
{
{
"table": "chat_messages_new",
"table": "chat_messages_new",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 415,
+ "line": 419,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "translations",
"table": "translations",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 506,
+ "line": 510,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "robotstreamer_integrations",
"table": "robotstreamer_integrations",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 605,
+ "line": 609,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "robotstreamer_integrations_new",
"table": "robotstreamer_integrations_new",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 656,
+ "line": 660,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "restream_destinations",
"table": "restream_destinations",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 691,
+ "line": 695,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "platform_connections",
"table": "platform_connections",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 709,
+ "line": 713,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "powerchat_connections",
"table": "powerchat_connections",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 731,
+ "line": 735,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "powerchat_webhook_deliveries",
"table": "powerchat_webhook_deliveries",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 748,
+ "line": 752,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_points",
"table": "channel_points",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 760,
+ "line": 764,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "kick_channel_cache",
"table": "kick_channel_cache",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 774,
+ "line": 778,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "comments",
"table": "comments",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 849,
+ "line": 853,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "media_request_settings",
"table": "media_request_settings",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 869,
+ "line": 873,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "media_requests",
"table": "media_requests",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 883,
+ "line": 887,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "anon_ip_mappings",
"table": "anon_ip_mappings",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 936,
+ "line": 940,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "app_state",
"table": "app_state",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1167,
+ "line": 1171,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "stream_memories",
"table": "stream_memories",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1181,
+ "line": 1185,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "stream_timeline_events",
"table": "stream_timeline_events",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1229,
+ "line": 1233,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "ai_usage",
"table": "ai_usage",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1254,
+ "line": 1258,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "streamer_overviews",
"table": "streamer_overviews",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1274,
+ "line": 1278,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "ai_timeline_cache",
"table": "ai_timeline_cache",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1296,
+ "line": 1300,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "chat_ai_summaries",
"table": "chat_ai_summaries",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1308,
+ "line": 1312,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "chat_timeline_events",
"table": "chat_timeline_events",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1328,
+ "line": 1332,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "easter_egg_solves",
"table": "easter_egg_solves",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1340,
+ "line": 1344,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "tts_voice_overrides",
"table": "tts_voice_overrides",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1352,
+ "line": 1356,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "relay_users",
"table": "relay_users",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1466,
+ "line": 1470,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "payment_orders",
"table": "payment_orders",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1588,
+ "line": 1592,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_moderators",
"table": "channel_moderators",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1621,
+ "line": 1625,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_moderation_settings",
"table": "channel_moderation_settings",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1638,
+ "line": 1642,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "emotes_new",
"table": "emotes_new",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1709,
+ "line": 1713,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_sounds",
"table": "channel_sounds",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1741,
+ "line": 1745,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_sounds_new",
"table": "channel_sounds_new",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1765,
+ "line": 1769,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "ai_chatbot_configs",
"table": "ai_chatbot_configs",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1803,
+ "line": 1807,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_ai_bots",
"table": "channel_ai_bots",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1828,
+ "line": 1832,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "channel_ai_config",
"table": "channel_ai_config",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1852,
+ "line": 1856,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "ai_viewer_threads",
"table": "ai_viewer_threads",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1873,
+ "line": 1877,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "ai_viewer_log",
"table": "ai_viewer_log",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1887,
+ "line": 1891,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "moderation_actions",
"table": "moderation_actions",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1920,
+ "line": 1924,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "pastes",
"table": "pastes",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1939,
+ "line": 1943,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "paste_likes",
"table": "paste_likes",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 1976,
+ "line": 1980,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "paste_comments",
"table": "paste_comments",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2008,
+ "line": 2012,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "stream_first_chats",
"table": "stream_first_chats",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2040,
+ "line": 2044,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "ip_log",
"table": "ip_log",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2051,
+ "line": 2055,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "approved_ips",
"table": "approved_ips",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2075,
+ "line": 2079,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "pending_ip_messages",
"table": "pending_ip_messages",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2092,
+ "line": 2096,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "hidden_relay_users",
"table": "hidden_relay_users",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2112,
+ "line": 2116,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "control_whitelist",
"table": "control_whitelist",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2277,
+ "line": 2281,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "control_configs",
"table": "control_configs",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2292,
+ "line": 2296,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "control_config_buttons",
"table": "control_config_buttons",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2306,
+ "line": 2310,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "stream_controls_new",
"table": "stream_controls_new",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2385,
+ "line": 2389,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "managed_streams",
"table": "managed_streams",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2420,
+ "line": 2424,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "vibe_coding_sessions",
"table": "vibe_coding_sessions",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2642,
+ "line": 2646,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "vibe_coding_events",
"table": "vibe_coding_events",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 2677,
+ "line": 2681,
"via": "repo"
"via": "repo"
},
},
{
{
"table": "viewer_samples",
"table": "viewer_samples",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 3956,
+ "line": 3960,
"via": "repo"
"via": "repo"
},
},
{
{
@@ -5366,7 +5366,7 @@
@@ -5366,7 +5366,7 @@
],
],
"contractTodos": 15,
"contractTodos": 15,
"unresolvedMounts": [],
"unresolvedMounts": [],
- "testFiles": 55,
+ "testFiles": 56,
"ci": false
"ci": false
},
},
{
{
@@ -5374,13 +5374,13 @@
@@ -5374,13 +5374,13 @@
"service": "network",
"service": "network",
"present": true,
"present": true,
"git": {
"git": {
- "head": "71be248264060ca6d30d083571928f9a10002688",
+ "head": "9b4e262cd8daf05ee2b6b92a06dabe70e2d42bc7",
"branch": "main",
"branch": "main",
- "originMain": "71be248264060ca6d30d083571928f9a10002688",
- "committedAt": "2026-09-21T11:57:37-07:00"
+ "originMain": "9b4e262cd8daf05ee2b6b92a06dabe70e2d42bc7",
+ "committedAt": "2026-09-22T14:14:53-07:00"
},
},
- "sourceFiles": 77,
- "loc": 20399,
+ "sourceFiles": 79,
+ "loc": 20646,
"tables": [
"tables": [
{
{
"table": "admin_rate_limits",
"table": "admin_rate_limits",
@@ -5547,7 +5547,7 @@
@@ -5547,7 +5547,7 @@
{
{
"table": "email_verification_tokens",
"table": "email_verification_tokens",
"file": "server/db/database.js",
"file": "server/db/database.js",
- "line": 506,
+ "line": 509,
"via": "repo"
"via": "repo"
},
},
{
{
@@ -5562,10 +5562,16 @@
@@ -5562,10 +5562,16 @@
"line": 26,
"line": 26,
"via": "repo"
"via": "repo"
},
},
+ {
+ "table": "identity_legacy_map",
+ "file": "server/identity/subjects.js",
+ "line": 25,
+ "via": "repo"
+ },
{
{
"table": "stream_live_announcements",
"table": "stream_live_announcements",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 300,
+ "line": 310,
"via": "repo"
"via": "repo"
},
},
{
{
@@ -5706,37 +5712,37 @@
@@ -5706,37 +5712,37 @@
"method": "GET",
"method": "GET",
"path": "/api/auth/anon-identities",
"path": "/api/auth/anon-identities",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 635
+ "line": 638
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/anon-session",
"path": "/api/auth/anon-session",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 512
+ "line": 515
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/api/auth/anon/:token",
"path": "/api/auth/anon/:token",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 582
+ "line": 585
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/anon/:token/link",
"path": "/api/auth/anon/:token/link",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 619
+ "line": 622
},
},
{
{
"method": "PUT",
"method": "PUT",
"path": "/api/auth/anon/:token/preferences",
"path": "/api/auth/anon/:token/preferences",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 596
+ "line": 599
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/change-password",
"path": "/api/auth/change-password",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 422
+ "line": 425
},
},
{
{
"method": "GET",
"method": "GET",
@@ -5784,97 +5790,97 @@
@@ -5784,97 +5790,97 @@
"method": "POST",
"method": "POST",
"path": "/api/auth/forgot-password",
"path": "/api/auth/forgot-password",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 206
+ "line": 208
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/login",
"path": "/api/auth/login",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 183
+ "line": 185
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/logout",
"path": "/api/auth/logout",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 506
+ "line": 509
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/api/auth/me",
"path": "/api/auth/me",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 362
+ "line": 364
},
},
{
{
"method": "PUT",
"method": "PUT",
"path": "/api/auth/profile",
"path": "/api/auth/profile",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 372
+ "line": 375
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/refresh",
"path": "/api/auth/refresh",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 300
+ "line": 302
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/register",
"path": "/api/auth/register",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 88
+ "line": 90
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/reset-password",
"path": "/api/auth/reset-password",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 254
+ "line": 256
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/api/auth/reset-password/validate",
"path": "/api/auth/reset-password/validate",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 238
+ "line": 240
},
},
{
{
"method": "DELETE",
"method": "DELETE",
"path": "/api/auth/sessions",
"path": "/api/auth/sessions",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 717
+ "line": 720
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/api/auth/sessions",
"path": "/api/auth/sessions",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 673
+ "line": 676
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/sessions",
"path": "/api/auth/sessions",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 686
+ "line": 689
},
},
{
{
"method": "DELETE",
"method": "DELETE",
"path": "/api/auth/sessions/:id",
"path": "/api/auth/sessions/:id",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 708
+ "line": 711
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/api/auth/users/:id/card",
"path": "/api/auth/users/:id/card",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 728
+ "line": 731
},
},
{
{
"method": "DELETE",
"method": "DELETE",
"path": "/api/auth/users/:id/follow",
"path": "/api/auth/users/:id/follow",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 811
+ "line": 814
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/api/auth/users/:id/follow",
"path": "/api/auth/users/:id/follow",
"file": "server/auth/routes.js",
"file": "server/auth/routes.js",
- "line": 780
+ "line": 783
},
},
{
{
"method": "GET",
"method": "GET",
@@ -6246,151 +6252,163 @@
@@ -6246,151 +6252,163 @@
"method": "GET",
"method": "GET",
"path": "/internal/anon-admin",
"path": "/internal/anon-admin",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 618
+ "line": 628
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/anon-list",
"path": "/internal/anon-list",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 667
+ "line": 677
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/audit",
"path": "/internal/audit",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 156
+ "line": 166
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/coins/credit",
"path": "/internal/coins/credit",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 242
+ "line": 252
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/coins/debit",
"path": "/internal/coins/debit",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 254
+ "line": 264
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/coins/stats",
"path": "/internal/coins/stats",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 204
+ "line": 214
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/coins/transfer",
"path": "/internal/coins/transfer",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 267
+ "line": 277
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/events/stream-live",
"path": "/internal/events/stream-live",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 284
+ "line": 294
+ },
+ {
+ "method": "POST",
+ "path": "/internal/identity/legacy-map",
+ "file": "server/identity/internal-routes.js",
+ "line": 29
+ },
+ {
+ "method": "GET",
+ "path": "/internal/identity/resolve",
+ "file": "server/identity/internal-routes.js",
+ "line": 18
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/issue-token",
"path": "/internal/issue-token",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 508
+ "line": 518
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/link-account",
"path": "/internal/link-account",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 107
+ "line": 108
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/notifications/mark-read",
"path": "/internal/notifications/mark-read",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 469
+ "line": 479
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/notifications/push",
"path": "/internal/notifications/push",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 411
+ "line": 421
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/notifications/push-bulk",
"path": "/internal/notifications/push-bulk",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 431
+ "line": 441
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/notifications/resolve-users",
"path": "/internal/notifications/resolve-users",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 488
+ "line": 498
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/notifications/unread/:userId",
"path": "/internal/notifications/unread/:userId",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 454
+ "line": 464
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/resolve-anon",
"path": "/internal/resolve-anon",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 539
+ "line": 549
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/stats",
"path": "/internal/stats",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 165
+ "line": 175
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/url-registry/resolved",
"path": "/internal/url-registry/resolved",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 174
+ "line": 184
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/user-avatar",
"path": "/internal/user-avatar",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 141
+ "line": 151
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/users/:id",
"path": "/internal/users/:id",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 58
+ "line": 59
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/users/:id/linked-accounts",
"path": "/internal/users/:id/linked-accounts",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 149
+ "line": 159
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/users/:id/theme",
"path": "/internal/users/:id/theme",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 95
+ "line": 96
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/users/bulk",
"path": "/internal/users/bulk",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 80
+ "line": 81
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/internal/users/by-username/:username",
"path": "/internal/users/by-username/:username",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 69
+ "line": 70
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/internal/verify-token",
"path": "/internal/verify-token",
"file": "server/internal/routes.js",
"file": "server/internal/routes.js",
- "line": 36
+ "line": 37
},
},
{
{
"method": "GET",
"method": "GET",
@@ -6462,25 +6480,25 @@
@@ -6462,25 +6480,25 @@
"method": "GET",
"method": "GET",
"path": "/oauth/.well-known/openid-configuration",
"path": "/oauth/.well-known/openid-configuration",
"file": "server/auth/oauth-routes.js",
"file": "server/auth/oauth-routes.js",
- "line": 304
+ "line": 306
},
},
{
{
"method": "GET",
"method": "GET",
"path": "/oauth/authorize",
"path": "/oauth/authorize",
"file": "server/auth/oauth-routes.js",
"file": "server/auth/oauth-routes.js",
- "line": 20
+ "line": 21
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/oauth/confirm",
"path": "/oauth/confirm",
"file": "server/auth/oauth-routes.js",
"file": "server/auth/oauth-routes.js",
- "line": 78
+ "line": 79
},
},
{
{
"method": "POST",
"method": "POST",
"path": "/oauth/token",
"path": "/oauth/token",
"file": "server/auth/oauth-routes.js",
"file": "server/auth/oauth-routes.js",
- "line": 131
+ "line": 132
},
},
{
{
"method": "GET",
"method": "GET",
@@ -7230,7 +7248,7 @@
@@ -7230,7 +7248,7 @@
],
],
"contractTodos": 0,
"contractTodos": 0,
"unresolvedMounts": [],
"unresolvedMounts": [],
- "testFiles": 17,
+ "testFiles": 18,
"ci": false
"ci": false
},
},
{
{
@@ -11173,7 +11191,7 @@
@@ -11173,7 +11191,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "ai_chatbot_configs",
"table": "ai_chatbot_configs",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1803"
+ "server/db/database.js:1807"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11217,7 +11235,7 @@
@@ -11217,7 +11235,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "ai_timeline_cache",
"table": "ai_timeline_cache",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1296"
+ "server/db/database.js:1300"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11233,7 +11251,7 @@
@@ -11233,7 +11251,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "ai_usage",
"table": "ai_usage",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1254"
+ "server/db/database.js:1258"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11249,7 +11267,7 @@
@@ -11249,7 +11267,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "ai_viewer_log",
"table": "ai_viewer_log",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1887"
+ "server/db/database.js:1891"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11265,7 +11283,7 @@
@@ -11265,7 +11283,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "ai_viewer_threads",
"table": "ai_viewer_threads",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1873"
+ "server/db/database.js:1877"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11359,7 +11377,7 @@
@@ -11359,7 +11377,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "anon_ip_mappings",
"table": "anon_ip_mappings",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:936"
+ "server/db/database.js:940"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11407,7 +11425,7 @@
@@ -11407,7 +11425,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "app_state",
"table": "app_state",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1167"
+ "server/db/database.js:1171"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -11423,7 +11441,7 @@
@@ -11423,7 +11441,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "approved_ips",
"table": "approved_ips",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2075"
+ "server/db/database.js:2079"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12021,7 +12039,7 @@
@@ -12021,7 +12039,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_ai_bots",
"table": "channel_ai_bots",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1828"
+ "server/db/database.js:1832"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12037,7 +12055,7 @@
@@ -12037,7 +12055,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_ai_config",
"table": "channel_ai_config",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1852"
+ "server/db/database.js:1856"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12053,7 +12071,7 @@
@@ -12053,7 +12071,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_moderation_settings",
"table": "channel_moderation_settings",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1638",
+ "server/db/database.js:1642",
"server/db/schema.sql:514"
"server/db/schema.sql:514"
],
],
"prodDbs": [
"prodDbs": [
@@ -12070,7 +12088,7 @@
@@ -12070,7 +12088,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_moderators",
"table": "channel_moderators",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1621",
+ "server/db/database.js:1625",
"server/db/schema.sql:499"
"server/db/schema.sql:499"
],
],
"prodDbs": [
"prodDbs": [
@@ -12087,7 +12105,7 @@
@@ -12087,7 +12105,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_points",
"table": "channel_points",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:760"
+ "server/db/database.js:764"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12103,7 +12121,7 @@
@@ -12103,7 +12121,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_sounds",
"table": "channel_sounds",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1741",
+ "server/db/database.js:1745",
"server/db/schema.sql:625"
"server/db/schema.sql:625"
],
],
"prodDbs": [
"prodDbs": [
@@ -12120,7 +12138,7 @@
@@ -12120,7 +12138,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "channel_sounds_new",
"table": "channel_sounds_new",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1765"
+ "server/db/database.js:1769"
],
],
"prodDbs": [],
"prodDbs": [],
"inCode": true,
"inCode": true,
@@ -12150,7 +12168,7 @@
@@ -12150,7 +12168,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "chat_ai_summaries",
"table": "chat_ai_summaries",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1308"
+ "server/db/database.js:1312"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12196,7 +12214,7 @@
@@ -12196,7 +12214,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "chat_messages_new",
"table": "chat_messages_new",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:415"
+ "server/db/database.js:419"
],
],
"prodDbs": [],
"prodDbs": [],
"inCode": true,
"inCode": true,
@@ -12210,7 +12228,7 @@
@@ -12210,7 +12228,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "chat_timeline_events",
"table": "chat_timeline_events",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1328"
+ "server/db/database.js:1332"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12348,7 +12366,7 @@
@@ -12348,7 +12366,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "comments",
"table": "comments",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:849",
+ "server/db/database.js:853",
"server/db/schema.sql:585"
"server/db/schema.sql:585"
],
],
"prodDbs": [
"prodDbs": [
@@ -12381,7 +12399,7 @@
@@ -12381,7 +12399,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "control_config_buttons",
"table": "control_config_buttons",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2306"
+ "server/db/database.js:2310"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12397,7 +12415,7 @@
@@ -12397,7 +12415,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "control_configs",
"table": "control_configs",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2292"
+ "server/db/database.js:2296"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12413,7 +12431,7 @@
@@ -12413,7 +12431,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "control_whitelist",
"table": "control_whitelist",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2277"
+ "server/db/database.js:2281"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12565,7 +12583,7 @@
@@ -12565,7 +12583,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "easter_egg_solves",
"table": "easter_egg_solves",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1340"
+ "server/db/database.js:1344"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12597,7 +12615,7 @@
@@ -12597,7 +12615,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "emotes_new",
"table": "emotes_new",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1709"
+ "server/db/database.js:1713"
],
],
"prodDbs": [],
"prodDbs": [],
"inCode": true,
"inCode": true,
@@ -12940,7 +12958,7 @@
@@ -12940,7 +12958,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "hidden_relay_users",
"table": "hidden_relay_users",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2112"
+ "server/db/database.js:2116"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -12970,7 +12988,7 @@
@@ -12970,7 +12988,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "ip_log",
"table": "ip_log",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2051"
+ "server/db/database.js:2055"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13000,7 +13018,7 @@
@@ -13000,7 +13018,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "kick_channel_cache",
"table": "kick_channel_cache",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:774"
+ "server/db/database.js:778"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13074,7 +13092,7 @@
@@ -13074,7 +13092,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "managed_streams",
"table": "managed_streams",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2420",
+ "server/db/database.js:2424",
"server/db/schema.sql:78"
"server/db/schema.sql:78"
],
],
"prodDbs": [
"prodDbs": [
@@ -13091,7 +13109,7 @@
@@ -13091,7 +13109,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "media_request_settings",
"table": "media_request_settings",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:869",
+ "server/db/database.js:873",
"server/db/schema.sql:722"
"server/db/schema.sql:722"
],
],
"prodDbs": [
"prodDbs": [
@@ -13108,7 +13126,7 @@
@@ -13108,7 +13126,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "media_requests",
"table": "media_requests",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:883",
+ "server/db/database.js:887",
"server/db/schema.sql:739"
"server/db/schema.sql:739"
],
],
"prodDbs": [
"prodDbs": [
@@ -13154,7 +13172,7 @@
@@ -13154,7 +13172,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "moderation_actions",
"table": "moderation_actions",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1920"
+ "server/db/database.js:1924"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13200,7 +13218,7 @@
@@ -13200,7 +13218,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "paste_comments",
"table": "paste_comments",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2008"
+ "server/db/database.js:2012"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13216,7 +13234,7 @@
@@ -13216,7 +13234,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "paste_likes",
"table": "paste_likes",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1976"
+ "server/db/database.js:1980"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13232,7 +13250,7 @@
@@ -13232,7 +13250,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "pastes",
"table": "pastes",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1939"
+ "server/db/database.js:1943"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13248,7 +13266,7 @@
@@ -13248,7 +13266,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "payment_orders",
"table": "payment_orders",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1588"
+ "server/db/database.js:1592"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13264,7 +13282,7 @@
@@ -13264,7 +13282,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "pending_ip_messages",
"table": "pending_ip_messages",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2092"
+ "server/db/database.js:2096"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13280,7 +13298,7 @@
@@ -13280,7 +13298,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "platform_connections",
"table": "platform_connections",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:709"
+ "server/db/database.js:713"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13296,7 +13314,7 @@
@@ -13296,7 +13314,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "powerchat_connections",
"table": "powerchat_connections",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:731"
+ "server/db/database.js:735"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13312,7 +13330,7 @@
@@ -13312,7 +13330,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "powerchat_webhook_deliveries",
"table": "powerchat_webhook_deliveries",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:748"
+ "server/db/database.js:752"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13342,7 +13360,7 @@
@@ -13342,7 +13360,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "relay_users",
"table": "relay_users",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1466"
+ "server/db/database.js:1470"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13358,7 +13376,7 @@
@@ -13358,7 +13376,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "restream_destinations",
"table": "restream_destinations",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:691"
+ "server/db/database.js:695"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13402,7 +13420,7 @@
@@ -13402,7 +13420,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "robotstreamer_integrations",
"table": "robotstreamer_integrations",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:605",
+ "server/db/database.js:609",
"server/db/schema.sql:58"
"server/db/schema.sql:58"
],
],
"prodDbs": [
"prodDbs": [
@@ -13419,7 +13437,7 @@
@@ -13419,7 +13437,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "robotstreamer_integrations_new",
"table": "robotstreamer_integrations_new",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:656"
+ "server/db/database.js:660"
],
],
"prodDbs": [],
"prodDbs": [],
"inCode": true,
"inCode": true,
@@ -13498,7 +13516,7 @@
@@ -13498,7 +13516,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "stream_controls_new",
"table": "stream_controls_new",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2385"
+ "server/db/database.js:2389"
],
],
"prodDbs": [],
"prodDbs": [],
"inCode": true,
"inCode": true,
@@ -13512,7 +13530,7 @@
@@ -13512,7 +13530,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "stream_first_chats",
"table": "stream_first_chats",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2040"
+ "server/db/database.js:2044"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13528,7 +13546,7 @@
@@ -13528,7 +13546,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "stream_memories",
"table": "stream_memories",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1181"
+ "server/db/database.js:1185"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13560,7 +13578,7 @@
@@ -13560,7 +13578,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "stream_timeline_events",
"table": "stream_timeline_events",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1229"
+ "server/db/database.js:1233"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13576,7 +13594,7 @@
@@ -13576,7 +13594,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "streamer_overviews",
"table": "streamer_overviews",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1274"
+ "server/db/database.js:1278"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13672,7 +13690,7 @@
@@ -13672,7 +13690,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "translations",
"table": "translations",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:506",
+ "server/db/database.js:510",
"server/i18n/translate.js:145"
"server/i18n/translate.js:145"
],
],
"prodDbs": [
"prodDbs": [
@@ -13689,7 +13707,7 @@
@@ -13689,7 +13707,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "tts_voice_overrides",
"table": "tts_voice_overrides",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:1352"
+ "server/db/database.js:1356"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -13879,7 +13897,7 @@
@@ -13879,7 +13897,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "vibe_coding_events",
"table": "vibe_coding_events",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2677",
+ "server/db/database.js:2681",
"server/db/schema.sql:198"
"server/db/schema.sql:198"
],
],
"prodDbs": [
"prodDbs": [
@@ -13896,7 +13914,7 @@
@@ -13896,7 +13914,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "vibe_coding_sessions",
"table": "vibe_coding_sessions",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:2642",
+ "server/db/database.js:2646",
"server/db/schema.sql:170"
"server/db/schema.sql:170"
],
],
"prodDbs": [
"prodDbs": [
@@ -13913,7 +13931,7 @@
@@ -13913,7 +13931,7 @@
"repo": "OpenVibe.Live",
"repo": "OpenVibe.Live",
"table": "viewer_samples",
"table": "viewer_samples",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:3956"
+ "server/db/database.js:3960"
],
],
"prodDbs": [
"prodDbs": [
"live.db"
"live.db"
@@ -14445,7 +14463,7 @@
@@ -14445,7 +14463,7 @@
"repo": "OpenVibe.Network",
"repo": "OpenVibe.Network",
"table": "email_verification_tokens",
"table": "email_verification_tokens",
"declaredAt": [
"declaredAt": [
- "server/db/database.js:506"
+ "server/db/database.js:509"
],
],
"prodDbs": [
"prodDbs": [
"network.db"
"network.db"
@@ -14473,6 +14491,22 @@
@@ -14473,6 +14491,22 @@
"wave": "W1 (module split)",
"wave": "W1 (module split)",
"note": "Identity, sessions, OAuth, themes, notifications, registry, chrome, audit, admin."
"note": "Identity, sessions, OAuth, themes, notifications, registry, chrome, audit, admin."
},
},
+ {
+ "repo": "OpenVibe.Network",
+ "table": "identity_legacy_map",
+ "declaredAt": [
+ "server/identity/subjects.js:25"
+ ],
+ "prodDbs": [
+ "network.db"
+ ],
+ "inCode": true,
+ "inProd": true,
+ "target": "OpenVibe.Network",
+ "disposition": "keep",
+ "wave": "W1 (module split)",
+ "note": "Identity, sessions, OAuth, themes, notifications, registry, chrome, audit, admin."
+ },
{
{
"repo": "OpenVibe.Network",
"repo": "OpenVibe.Network",
"table": "ip_log",
"table": "ip_log",
@@ -14637,7 +14671,7 @@
@@ -14637,7 +14671,7 @@
"repo": "OpenVibe.Network",
"repo": "OpenVibe.Network",
"table": "stream_live_announcements",
"table": "stream_live_announcements",
"declaredAt": [
"declaredAt": [
- "server/internal/routes.js:300"
+ "server/internal/routes.js:310"
],
],
"prodDbs": [
"prodDbs": [
"network.db"
"network.db"
@@ -19283,7 +19317,7 @@
@@ -19283,7 +19317,7 @@
}
}
],
],
"metrics": {
"metrics": {
- "github.charters": "21 charter-only repos of 32",
+ "github.charters": "20 charter-only repos of 32",
"contract.todo-markers": "Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0",
"contract.todo-markers": "Live 15, Network 0, Media 0, Tools 0, Community 0, Games 0, Sites 0",
"outbound.call-sites": "65 caller-file/target pairs across 50 files",
"outbound.call-sites": "65 caller-file/target pairs across 50 files",
"outbound.internal-key": "28 of 65 call sites authenticate with the shared internal key",
"outbound.internal-key": "28 of 65 call sites authenticate with the shared internal key",
@@ -19293,7 +19327,7 @@
@@ -19293,7 +19327,7 @@
"vendored.divergent": "4 divergent: Community/ov-icons.js, Live/user-card.js, Media/ov-icons.js, Tools/ov-icons.js",
"vendored.divergent": "4 divergent: Community/ov-icons.js, Live/user-card.js, Media/ov-icons.js, Tools/ov-icons.js",
"ci.repos": "0 of 7 scanned repos have .github/workflows",
"ci.repos": "0 of 7 scanned repos have .github/workflows",
"deploy.drift": "1 service(s) not running origin/main",
"deploy.drift": "1 service(s) not running origin/main",
- "tests.OpenVibe.Live": "55 test files",
+ "tests.OpenVibe.Live": "56 test files",
"tables.OpenVibe.Live": "125 tables",
"tables.OpenVibe.Live": "125 tables",
"tables.OpenVibe.Live.target:OpenVibe.Games (import source)": "31 Live tables target OpenVibe.Games (import source)",
"tables.OpenVibe.Live.target:OpenVibe.Games (import source)": "31 Live tables target OpenVibe.Games (import source)",
"tables.OpenVibe.Live.target:OpenVibe.AI": "14 Live tables target OpenVibe.AI",
"tables.OpenVibe.Live.target:OpenVibe.AI": "14 Live tables target OpenVibe.AI",
@@ -19312,9 +19346,9 @@
@@ -19312,9 +19346,9 @@
"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": "17 test files",
- "tables.OpenVibe.Network": "35 tables",
- "tables.OpenVibe.Network.target:OpenVibe.Network": "32 Network tables target OpenVibe.Network",
+ "tests.OpenVibe.Network": "18 test files",
+ "tables.OpenVibe.Network": "36 tables",
+ "tables.OpenVibe.Network.target:OpenVibe.Network": "33 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.Media": "4 test files",
"tests.OpenVibe.Media": "4 test files",
@@ -19383,7 +19417,7 @@
@@ -19383,7 +19417,7 @@
"metrics": [
"metrics": [
{
{
"key": "github.charters",
"key": "github.charters",
- "value": "21 charter-only repos of 32"
+ "value": "20 charter-only repos of 32"
},
},
{
{
"key": "contract.todo-markers",
"key": "contract.todo-markers",
@@ -19660,7 +19694,7 @@
@@ -19660,7 +19694,7 @@
"metrics": [
"metrics": [
{
{
"key": "github.charters",
"key": "github.charters",
- "value": "21 charter-only repos of 32"
+ "value": "20 charter-only repos of 32"
}
}
],
],
"verified": true
"verified": true
@@ -20034,13 +20068,13 @@
@@ -20034,13 +20068,13 @@
"id": "EC1",
"id": "EC1",
"text": "Every table has an owner classification",
"text": "Every table has an owner classification",
"pass": true,
"pass": true,
- "detail": "249 tables classified, 0 unclassified"
+ "detail": "250 tables classified, 0 unclassified"
},
},
{
{
"id": "EC2",
"id": "EC2",
"text": "Every route is attributed to a repo and source line",
"text": "Every route is attributed to a repo and source line",
"pass": true,
"pass": true,
- "detail": "926 routes; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix)"
+ "detail": "928 routes; 0 router mounts whose module could not be resolved (their routes are listed without the mount prefix)"
},
},
{
{
"id": "EC3",
"id": "EC3",