Skip to content

claw-wall: push channel messages into channel-memory #266

Description

@mostlydev

Motivation

The channel-memory adapter should not pull from Discord independently. claw-wall already owns Discord channel surfaces, raw message identity, ACL checks, backfill/polling, and feed serving, so Phase 2 should use claw-wall as the source owner and push retained messages into channel-memory.

Depends on #265.

Scope

  • Add optional compile-time/runtime wiring for claw-wall to discover a channel-memory ingest endpoint when the adapter is present.
  • Push retained Discord messages from claw-wall to channel-memory after backfill and forward polling.
  • Send stable channel/message identity, author metadata, timestamps, edit/delete state, content, and content_hash.
  • Make push ingest idempotent and retryable without blocking raw-window channel-awareness serving.
  • Preserve channel allowlist/visibility boundaries; channel-memory must not become a bypass around claw-wall policy.
  • Add a repair/backfill path that can replay retained raw messages through the same ingest contract.

Out of scope

  • Implementing the SQLite adapter itself beyond whatever test fake is needed.
  • Serving digest-backed channel awareness.
  • Direct Discord gateway ingest inside channel-memory.
  • Release pin, changelog, or nav changes.

Acceptance

  • Unit tests prove claw-wall emits the expected ingest payload for backfilled and newly polled messages.
  • Failure tests prove channel-awareness remains fail-open to the raw window when channel-memory ingest is unavailable.
  • Authorization/allowlist tests prove pushed data is scoped to the channels claw-wall is allowed to serve.
  • A Docker/fake-service spike proves messages cross the claw-wall to channel-memory boundary.
  • Public docs and issue/PR text stay deployment-agnostic.

Refs #262
Refs #263

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions