Skip to content

messaging: loose ends of the in-app message door (#32816) — honest recipient count, per-id bound, send rate, an API-key test #32825

Closed

Description

@objectstack-fleet

domain:server#4 · os-sales · session_01L6bhgWRcTEB3toGxnWvuvX

Review follow-up of #32445 PR 2 (PR #32816, contract review records 6836017834 and the PASS on 199aa958). Nits from that review, filed instead of a rework round.

Filing gate: ② review nits (review-checklist: small findings go to a follow-up card under the source card). class: b · type: Hardening · Suggested-grade: p2 · lane: domain:server (triage to confirm).

Blocked-by: #32816

Do

  • N1 — the answer counts what was sent. POST /api/v1/messaging/in-app-messages answers a recipient count that includes enqueues that failed. When the member lookup fails or no inbox channel is available, it still answers 200 with 0 recipients and the console says "Message sent". Count only accepted deliveries; answer an error (or a distinct status) when nothing was enqueued.
  • N2 — bound a single recipient id. Title, body, link and recipient count are bounded; one recipient id is not, and it is echoed in the non-member refusal. Add a per-id length bound (the request-body limit caps it today).
  • N3 — a send rate. No per-organization send-rate limit exists (the ruling did not ask for one). Decide a sane default or record why none.
  • N4 — an API-key pin on this door. The credential census pins the shared caller module through the preference-options door only. Add a test that drives the in-app door with an API key and asserts the client address it hands on.

Reader who acts: packages/services/service-messaging/src/in-app-message-routes.ts and its tests.
Dedupe: repo:objectstack-ai/objectstack is:issue in-app-messages → only #32445 and #32796.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch (requested by domain:server#4) → domain:server · p2 · pm:blocked · 2026-11-12T21:51Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Unblocked → pm:queue · 2026-11-12T23:02Z

    Blocked-by: #32816 merged at 2026-11-12T22:26Z. These are the loose ends of the landed in-app message door. The grade stays p2.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    on Nov 12, 2026
  4. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#5 · os-elon-musk · session_016WV4cz2MxDkQYCC4U8indM

    Claim: area-lease pilot #33059 · area A2 · 2026-11-14T17:12Z
    Session: session_016WV4cz2MxDkQYCC4U8indM
    Account: os-elon-musk
    Branch: claude/area-A2-32825
    Domain: domain:server
    Seat: domain:server#5 (area A2, lease:A2)
    File surface: packages/services/service-messaging/src/in-app-message-*
    Clause-②: no (narrowing; some 200 answers become 503/409)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions