<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Edge case when backfilling topics]]></title><description><![CDATA[<p dir="auto">When it comes to backfilling topics, NodeBB utilises what is called "context collection backfill" instead of reply-chain traversal. In a nutshell, instead of crawling up and down the reply tree one-by-one — kind of like what Mastodon does currently — it checks for a canonical source-of-truth in the <code>context</code> property.</p>
<p dir="auto">NodeBB supports both strategies, since not all objects contain <code>context</code>.</p>
<p dir="auto">I found a fun little edge case where if I start a topic, a reply is received, and that reply points to my instance, it won't catch any replies made in between.</p>
<p dir="auto">In other words:</p>
<pre><code>localA starts topic → remoteB replies → remoteC replies to B only → remoteB replies to C and A
</code></pre>
<p dir="auto">In this scenario, because my instance <code>A</code> is left out of the third activity, I don't know about it. When the fourth activity appears, the context is checked, <code>C</code>'s reply isn't in it, and I proceed without knowing about it. Oops!</p>
<p dir="auto">In this case, when incoming replies reference a context that is same-origin to your own instance, you <em>should not</em> use context collection backfill, because:</p>
<ol>
<li>You already have the entire context, so it's unnecessarily duplication of work</li>
<li>You won't catch any replies made out-of-band unless you do reply-tree traversal</li>
</ol>
<p dir="auto">Tagging <a href="https://activitypub.space/user/silverpill%40mitra.social" rel="nofollow ugc">@silverpill@mitra.social</a> because this is related to <a href="https://w3id.org/fep/f228" rel="nofollow ugc">FEP f228</a>.</p>
]]></description><link>https://fedi.wiki/topic/46ef52bd-3e05-4e1c-ae83-d0485222bdac/edge-case-when-backfilling-topics</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 08:06:56 GMT</lastBuildDate><atom:link href="https://fedi.wiki/topic/46ef52bd-3e05-4e1c-ae83-d0485222bdac.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Jul 2026 14:22:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Edge case when backfilling topics on Wed, 29 Jul 2026 17:45:57 GMT]]></title><description><![CDATA[<p dir="auto"><code>C</code>'s reply didn't get dropped, it simply didn't include <code>A</code>, the original server. The last reply <em>did</em>, but because the context was <code>A</code>, it never contained it, so it never pulled it. <code>inReplyTo</code> isn't checked when utilising context-backfill because it is supposed to <em>replace</em> having to do that.</p>
<p dir="auto">Except not in this edge case <img src="https://fedi.wiki/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=9b79ade230e" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
]]></description><link>https://fedi.wiki/post/https://activitypub.space/post/2146</link><guid isPermaLink="true">https://fedi.wiki/post/https://activitypub.space/post/2146</guid><dc:creator><![CDATA[julian@activitypub.space]]></dc:creator><pubDate>Wed, 29 Jul 2026 17:45:57 GMT</pubDate></item><item><title><![CDATA[Reply to Edge case when backfilling topics on Wed, 29 Jul 2026 17:43:51 GMT]]></title><description><![CDATA[<blockquote><p>When the fourth activity appears, the context is checked, C's reply isn't in it, and I proceed without knowing about it. Oops!</p></blockquote><p>I don't understand this part. Is C's reply being dropped?</p><p>I think if you encounter an object where <code>inReplyTo</code> is not known to you, that unknown object should be fetched, regardless of <code>context</code>.</p><blockquote><p>this is related to FEP f228.</p></blockquote><p>FEP-f228 specifies a backfill algorithm that works from top-level post down the thread. But it would be nice to provide an algorithm that works for any post in a thread. I'll think about it.</p>]]></description><link>https://fedi.wiki/post/https://mitra.social/objects/019faef9-c320-77b1-bd78-f70465daad10</link><guid isPermaLink="true">https://fedi.wiki/post/https://mitra.social/objects/019faef9-c320-77b1-bd78-f70465daad10</guid><dc:creator><![CDATA[silverpill@mitra.social]]></dc:creator><pubDate>Wed, 29 Jul 2026 17:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Edge case when backfilling topics on Wed, 29 Jul 2026 14:28:42 GMT]]></title><description><![CDATA[<p dir="auto">I see two reasons this could happen:</p>
<ol>
<li>C's server or client software doesn't know how to include the <code>context</code></li>
<li>C intentionally wanted to remove their reply to B from the <code>context</code>. It's a semi-private aside.</li>
</ol>
<p dir="auto">I think you'd want to backfill in case 1 but not in case 2. But I don't think there's an easy way to tell which is which.</p>
]]></description><link>https://fedi.wiki/post/https://activitypub.space/post/2141</link><guid isPermaLink="true">https://fedi.wiki/post/https://activitypub.space/post/2141</guid><dc:creator><![CDATA[evan@activitypub.space]]></dc:creator><pubDate>Wed, 29 Jul 2026 14:28:42 GMT</pubDate></item></channel></rss>