Skip to content

Design complete-record row filtering for subscriptions on residency non-owners #3533

Open

Description

@kriszyp

Subscription rowFilter predicates on a residency non-owner evaluate the local invalidation projection. An unindexed attribute is absent there, so the result can differ from evaluating the complete owner record. This existing limitation is explicitly retained and documented by the owner-approved scope of #3527 and HarperFast/documentation#753.

Design a separate complete-record filtering contract: choose whether unsupported predicates are refused or resolved against an owner, and specify unavailable-owner behavior, ordering, replay and backpressure. Keep authorization checks independent of application filters. Do not silently change the current protocol as part of the declarative residency work.

Acceptance: a concrete proposed contract and regression matrix for positive/negated predicates, indexed/unindexed inputs, live and replayed events, and unavailable owners. The existing synthetic case is unitTests/resources/declarativeWriterReplica.test.js in #3527. No customer incident is attached; no release commitment is requested.

Related: #3307 covers attribute read permissions on delivered payloads, a separate boundary.

Review-Deferral: 0c5538834eee3774 severity=nit category=security

🤖 Generated by OpenAI Codex; posted via @kriszyp.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    P3

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions