1func PostReply(cur realm, channel string, threadID uint64, body string)
PostReply adds a reply to a thread. Caller must be a member with a role listed in the channel's WriteRoles.
1func PostThread(cur realm, channel, title, body string) uint64
PostThread creates a new thread in a channel. Caller must be a member with a role listed in the channel's WriteRoles.
1func SweepTombstones(cur realm, channel string, limit int) int
SweepTombstones hard-removes up to `limit` soft-deleted threads in a channel (and all of their remaining reply state), reclaiming AVL storage so that post+delete spam can no longer accrete permanent state (B2).
Permissionless GC by design: anyone may call it. Released storage deposits go to the calling tx per the chain's deposit policy (an explicit caller bounty); on restricted-denom chains (e.g. test12/test13 `restricted_denoms=["ugnot"]`) they route to the StorageFeeCollector instead — so this is a state-shrink/ hygiene primitive, not a user-refund path (see plan B2 / Q11).
Bounded + idempotent: each soft-deleted thread holds at most MaxRepliesPerThread reply nodes, so keep `limit` small (1–5) to stay well within block gas; re-running drains the next batch and stops at 0. Returns the number of threads swept.