{"id":"pst_01M3YN6AH5WS35CD2DGJACKY54","url":"https://openvibe.blog/@openvibe/patch-notes-wait-for-the-async-inbound-failure-before-asserting-it-in-relay-test","blog":{"id":"blg_01M362MF0EDJ7QHQTRD8A3Q981","handle":"openvibe","title":"The OpenVibe blog","url":"https://openvibe.blog/"},"title":"Patch notes: Wait for the async inbound failure before asserting it in relay test","summary":"What shipped on OpenVibe from 2026-10-01 to 2026-10-02: 42 changes to OpenVibe.Media, OpenVibe.AI, OpenVibe.Codes, OpenVibe.Community, OpenVibe.Host, OpenRe.Stream and 10 more.","body_markdown":"What shipped on OpenVibe from 2026-10-01 to 2026-10-02: 42 changes to OpenVibe.Media, OpenVibe.AI, OpenVibe.Codes, OpenVibe.Community, OpenVibe.Host, OpenRe.Stream and 10 more. Every line below is a commit message from the OpenVibers repositories, linked to the change itself.\n\n## Highlights\n\n- **OpenVibe.Community:** Wait for the async inbound failure before asserting it in relay test (#6) ([`cd34b84`](https://github.com/OpenVibers/OpenVibe.Community/commit/cd34b840aeea0fc82b4b23b9420d843ff9e104ad))\n\n## OpenVibe.Media\n\n[openvibe.media](https://openvibe.media) · [repository](https://github.com/OpenVibers/OpenVibe.Media)\n\n- Plan T0 — the await/guard audit for OpenVibe.Media's background jobs (#5) ([`9b9af39`](https://github.com/OpenVibers/OpenVibe.Media/commit/9b9af396dcff423c202c626ac6e555769940ed12))\n- Diff summary (exactly the two prescribed changes, nothing else) (#6) ([`eb52306`](https://github.com/OpenVibers/OpenVibe.Media/commit/eb52306edc1f3ad1fdda4f936e446fea91dc2693))\n- Move Media Cache-Control onto openvibe-shared/cache-policy (#7) ([`a84a669`](https://github.com/OpenVibers/OpenVibe.Media/commit/a84a6692c274f028911c18cb1753d2e4491b26e4))\n- Add per-app webhook send tallies and an operator webhooks section ([`3c2d617`](https://github.com/OpenVibers/OpenVibe.Media/commit/3c2d617892e8a0ed8bf407a3b8d158b1bc0ef474))\n- Shorten webhook retry waits in tests without patching global setTimeout ([`593f0a7`](https://github.com/OpenVibers/OpenVibe.Media/commit/593f0a710bd938099c287bee488420ee3bbb1a4a))\n- Make the drill test's corrupt B2 copy always differ from the original ([`3995ddc`](https://github.com/OpenVibers/OpenVibe.Media/commit/3995ddca294ce8e9ae40df8749dd33867525f3bc))\n- Show outbound webhook tallies on /me/ops and clear last error on success ([`a75784b`](https://github.com/OpenVibers/OpenVibe.Media/commit/a75784b8bb9f6a33f486f8b559dac17b3a03f518))\n- Make the paste API read-only and answer 410 pastes.moved to writes (#9) ([`7f81034`](https://github.com/OpenVibers/OpenVibe.Media/commit/7f81034b56cc92fb2054a3bb99f96243d39b5fda))\n\n## OpenVibe.AI\n\n[ai.openvibe.network](https://ai.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.AI)\n\n- Delete dead fallback and per-role model config from the docs (#3) ([`e569b27`](https://github.com/OpenVibers/OpenVibe.AI/commit/e569b27a77ab3219fc004a73ad71f83570e94c25))\n- Test JWKS refetch and signing key rotation (#4) ([`84a920d`](https://github.com/OpenVibers/OpenVibe.AI/commit/84a920df602c01b474afde16db398109956855da))\n- Bump openvibe-sdk pin from v0.25.2 to v0.26.0 (#5) ([`d056134`](https://github.com/OpenVibers/OpenVibe.AI/commit/d0561341d425a4389c29a1a25029a84a3de7c2d9))\n- Answer errors, outbox and shutdown through openvibe-sdk/service (#6) ([`fe6ed60`](https://github.com/OpenVibers/OpenVibe.AI/commit/fe6ed607e9b1adda4e5dad3bdc2d37461213026b))\n- Price routing on platform rate cards and provider states per period (#7) ([`8903236`](https://github.com/OpenVibers/OpenVibe.AI/commit/8903236992d81ebbdc8f5eaea7ff89ed5a5717ae))\n- Serve a public price and latency page at /stats (#8) ([`d2b16bd`](https://github.com/OpenVibers/OpenVibe.AI/commit/d2b16bdaecad6927d22cfb557e36afbda52d2453))\n\n## OpenVibe.Codes\n\n[openvibe.codes](https://openvibe.codes) · [repository](https://github.com/OpenVibers/OpenVibe.Codes)\n\n- Serve Codes' asset and page cache headers from the shared cache-policy (#2) ([`5820191`](https://github.com/OpenVibers/OpenVibe.Codes/commit/5820191e270ac3120cd17b1dfb3eb1720fc82067))\n- Pin openvibe-contracts v0.84.0, sdk v0.26.0 and shared v2.4.0 ([`6bb0e80`](https://github.com/OpenVibers/OpenVibe.Codes/commit/6bb0e809867b50b44a1c3ebbaa07371ab85f4422))\n- Record integrity hashes for the contracts and shared pins ([`f3ec74f`](https://github.com/OpenVibers/OpenVibe.Codes/commit/f3ec74f42617a02297706c27797bc52e9b34a247))\n- Move Codes' shutdown onto openvibe-sdk/service (#4) ([`8636125`](https://github.com/OpenVibers/OpenVibe.Codes/commit/8636125487cbddd792f206b2cbcceea34ce1a422))\n\n## OpenVibe.Community\n\n[openvibe.community](https://openvibe.community) · [repository](https://github.com/OpenVibers/OpenVibe.Community)\n\n- T10 lane E job 1 — Community tombstone cleanup (complete) ([`3a1eede`](https://github.com/OpenVibers/OpenVibe.Community/commit/3a1eede1414d51704eb3113c41e206b51a953929))\n- Submissions: a reviewed section for community deliverables (#3) ([`e2822a3`](https://github.com/OpenVibers/OpenVibe.Community/commit/e2822a36fdca041df995a884eb9f5cd9fa3fde89))\n- Show and take paste comments on the paste's typed comment thread (#5) ([`d7686f2`](https://github.com/OpenVibers/OpenVibe.Community/commit/d7686f25a941bbe2a9a49f17b67e6ace64ad6137))\n- Wait for the async inbound failure before asserting it in relay test (#6) ([`cd34b84`](https://github.com/OpenVibers/OpenVibe.Community/commit/cd34b840aeea0fc82b4b23b9420d843ff9e104ad))\n\n## OpenVibe.Host\n\n[openvibe.host](https://openvibe.host) · [repository](https://github.com/OpenVibers/OpenVibe.Host)\n\n- T0 report — ovhost logs <svc [--tail n] ([`3e036ca`](https://github.com/OpenVibers/OpenVibe.Host/commit/3e036ca4bca2c0a585e0e9317b965644d128639c))\n- Add a logs subcommand to the ovhost CLI (#3) ([`203642c`](https://github.com/OpenVibers/OpenVibe.Host/commit/203642ca803789bf7017cf41d4998443f388a31e))\n- Serve Host cache headers from the shared cache-policy module (#4) ([`a73495e`](https://github.com/OpenVibers/OpenVibe.Host/commit/a73495e362eb0ba94b68249f91f9da6cd0ab1510))\n\n## OpenRe.Stream\n\n[openre.stream](https://openre.stream) · [repository](https://github.com/OpenVibers/OpenRe.Stream)\n\n- Restart ICE, check If-Match and Bearer on WHIP PATCH and DELETE (#5) ([`ff2048b`](https://github.com/OpenVibers/OpenRe.Stream/commit/ff2048bed0988fd0393dbd50f2f328b1bfdaf850))\n- Plan T4: the RFC 9725 follow-ups the independent review of PR 5 left… (#6) ([`af1fb50`](https://github.com/OpenVibers/OpenRe.Stream/commit/af1fb505fe4d1cd78732bbe84de455b84c045505))\n- Take robots.txt Cache-Control from openvibe-shared cache-policy (#7) ([`29f2c7e`](https://github.com/OpenVibers/OpenRe.Stream/commit/29f2c7e620411290b4e7d658c937783ebf9250a5))\n\n## OpenVibe.Blog\n\n[openvibe.blog](https://openvibe.blog) · [repository](https://github.com/OpenVibers/OpenVibe.Blog)\n\n- Plan T1: move OpenVibe.Blog onto openvibe-sdk/service from… (#2) ([`17832d8`](https://github.com/OpenVibers/OpenVibe.Blog/commit/17832d8c63a84f13196fc0cedb90a3f1bf6e69a6))\n- Serve Blog cache headers through openvibe-shared/cache-policy (#3) ([`9a335d2`](https://github.com/OpenVibers/OpenVibe.Blog/commit/9a335d28a81a2106e6aa12bf0d734fcde7911ab1))\n\n## OpenVibe.Coupons\n\n[openvibe.coupons](https://openvibe.coupons) · [repository](https://github.com/OpenVibers/OpenVibe.Coupons)\n\n- Serve every Cache-Control through openvibe-shared/cache-policy (#2) ([`c9f3cb6`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/c9f3cb66d6c344ce7c71082985a4f0b3f9e60992))\n- Move Coupons errors and shutdown onto openvibe-sdk/service (#3) ([`d968389`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/d96838915aabd613985dacf93f7337757173d390))\n\n## OpenVibe.Live\n\n[openvibe.live](https://openvibe.live) · [repository](https://github.com/OpenVibers/OpenVibe.Live)\n\n- Done. Both changes are in test/analytics-pg.test.js and nothing else… (#9) ([`f36f57f`](https://github.com/OpenVibers/OpenVibe.Live/commit/f36f57f815ffd72c37fd645417be77b430997234))\n- Build Live SEO, discovery files and cache headers with openvibe-shared (#10) ([`9e64b18`](https://github.com/OpenVibers/OpenVibe.Live/commit/9e64b18123a50f6db6e35f86f7a9071372359eb8))\n\n## OpenVibe.News\n\n[openvibe.news](https://openvibe.news) · [repository](https://github.com/OpenVibers/OpenVibe.News)\n\n- Serve News cache headers through openvibe-shared cache-policy (#2) ([`e52c812`](https://github.com/OpenVibers/OpenVibe.News/commit/e52c812f65654d87b8e4cc867d5d306411935898))\n- Move News errors and shutdown onto openvibe-sdk/service (#3) ([`6d30b5e`](https://github.com/OpenVibers/OpenVibe.News/commit/6d30b5e063d4481bf0b82e40fbb0725ede2bcc4b))\n\n## OpenVibe.Deals\n\n[openvibe.deals](https://openvibe.deals) · [repository](https://github.com/OpenVibers/OpenVibe.Deals)\n\n- Route every server cache header through openvibe-shared cache-policy (#2) ([`8442b0e`](https://github.com/OpenVibers/OpenVibe.Deals/commit/8442b0e93534215257ae9c170832b023b8bc4607))\n\n## OpenVibe.Reviews\n\n[openvibe.reviews](https://openvibe.reviews) · [repository](https://github.com/OpenVibers/OpenVibe.Reviews)\n\n- Serve Reviews cache headers through openvibe-shared cache-policy (#2) ([`e69dd19`](https://github.com/OpenVibers/OpenVibe.Reviews/commit/e69dd198e334068908752cf2687424d1917b1c8e))\n\n## OpenVibe.Search\n\n[search.openvibe.network](https://search.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Search)\n\n- Serve Search cache headers through openvibe-shared/cache-policy (#3) ([`e304199`](https://github.com/OpenVibers/OpenVibe.Search/commit/e304199da8f458f2b077d32531c61edf3adf06c7))\n\n## OpenVibe.Tips\n\n[openvibe.tips](https://openvibe.tips) · [repository](https://github.com/OpenVibers/OpenVibe.Tips)\n\n- Route every Cache-Control value through openvibe-shared cache-policy (#2) ([`52fb3cb`](https://github.com/OpenVibers/OpenVibe.Tips/commit/52fb3cb102f3200ac3b0f419e3be1c51f6945310))\n\n## OpenVibe.Trade\n\n[openvibe.trade](https://openvibe.trade) · [repository](https://github.com/OpenVibers/OpenVibe.Trade)\n\n- Serve all Cache-Control values from openvibe-shared/cache-policy (#2) ([`f632763`](https://github.com/OpenVibers/OpenVibe.Trade/commit/f632763e66d6e1eaa3ea38f66cce5dbfb8263b28))\n\n## OpenVibe.Wiki\n\n[openvibe.wiki](https://openvibe.wiki) · [repository](https://github.com/OpenVibers/OpenVibe.Wiki)\n\n- Serve cache headers through openvibe-shared cache-policy (#2) ([`f088ee1`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/f088ee1251fbc0d723f99a7b05248afc5511fbba))\n\n---\n\nPatch notes are put together automatically when enough changes have shipped, or when a large feature lands. See every site's own updates page for the live list.","revision":1,"state":"published","visibility":"public","published_at":"2026-10-02T15:54:41.081Z","revised_at":"2026-10-02T15:54:41.069Z","author":{"subject":"usr_01KKT9AC60KM7CRTB3WN1Z8P56","name":"goosely","username":"goosely"},"authorship":{"mode":"imported","workflow":null,"reviewed":false,"disclosure":{"mode":"imported","short":"Imported","long":"Imported from Commit messages from the OpenVibers repositories on GitHub; originally by OpenVibers."}},"tags":["patch-notes","media","ai","codes","community","host","openre","blog","coupons","live","news"],"categories":[],"series":{"title":"Patch notes","url":"https://openvibe.blog/@openvibe/series/patch-notes","position":null},"media":[],"citations":[],"indexability":{"indexable":true,"robots":"index, follow","reasons":[]}}