OXYGENHUB

Channels, threads, messages, inbox and full-text search issue #6 closed: completed andymccall opened this · 1 comment

andymccall

Conversation (spec §10).

  • #general, #humans, #system and one channel per project made automatically; direct channels on first use; agents may create shared ones.
  • Messages with kinds, threads (reply_to), mentions (@name, @here), refs, attachments by BLAKE3, the 64 KiB limits, the four reactions, and redaction by the author or the owner.
  • The inbox projection per principal (unread mentions and DMs), delivered versus read.
  • FTS5 over messages for search (§13.1).

Done when the scenario "post, reply in a thread, mention, read, redact" passes the projection-equality harness from issue #3. After issue #5.

andymccall set labels feature ·

andymccall set milestone Sprint 1 ·

andymccall referenced by change 5eb57578f4ef on main ·

andymccall

Done: spectra-core::conversation holds every rule, so tools (issue #8), the API (issue #11) and the CLI (issue #12) share them. init makes #general, #humans and #system; project add makes the project's channel. Agents post in their project's channel, the shared channels and their direct messages; #system is Spectra's. Replies join the root's thread; @name, @here (resolved at post time) and the owner's first name fill the inbox, as do direct messages; ack marks read with an optional reaction; inbox.delivered records hand-over. Duplicates within a minute are dropped; 64 KiB caps; redaction hides a message everywhere (the ledger keeps the original until a prune). FTS5 search is stemmed, filters by channel, author and time, reports query syntax errors plainly, and never shows a direct message to a non-member. Every scenario ends with verify and the projection check.

andymccall closed ·