After a lot of work, posting threads now also communicates using new repository code.
One of the most difficult things about the entire project is pagination. The little post counters on the right are unironically the most complex system in the database design. Scylla is blazing fast and can be distributed across multiple continents, which is why I picked it. However, as a downside, it HATES sequential values and it HATES atomic locking. It flat out doesn't exist in its design: you cannot insert a bunch of rows from all over the world to databases on different continents and know for sure that posts are going to be in order 1, 2, 3, because it just doesn't exist.
However, unlike modern chatrooms and other designs where order is more flexible, forums are kinda old and rigid. A thread has 20 posts per page. A node has 100 threads per page. It's set in stone.
Now while it's pretty easy to figure out that you have 10 posts in a thread and that the next one is going to be in position 10, forums are even more dumb than that and soft-deleted stuff doesn't push the positions. If I delete a bunch of spam, you'd not want to see 3 posts per page and 0 posts the next, etc. That means positions are both very inflexible but also necessarily need to change.
Since I can't be sure that a thread is going to order its posts correctly, the next best thing I can do is check to make sure that the thread's MAX(position) field is equal to its atomic locking thread_replies value. If it doesn't match, I know that time and space tore apart a little, and I can flag the thread as needing a repair for its ordering. This can happen automatically, and it won't be hard to set up, because I've already figured out how to do internal jobs.