Skip to content

test(comms): pin dmChannelName properties and DM two-party read scope (RIG-3535) - #1136

Merged
trunk-io[bot] merged 1 commit into
compass-comms/rig3538-ring-lag-resyncfrom
compass-comms/rig3535-dm-lifecycle
Sep 12, 2026
Merged

test(comms): pin dmChannelName properties and DM two-party read scope (RIG-3535)#1136
trunk-io[bot] merged 1 commit into
compass-comms/rig3538-ring-lag-resyncfrom
compass-comms/rig3535-dm-lifecycle

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

This PR is part of a stack containing 4 PRs:

  1. main
  2. test(comms): deepen supervisor orchestration coverage (RIG-3533) #1114
  3. test(comms): pin the ring-lag resync arms and replay-boundary exactness (RIG-3538) #1123
  4. "test(comms): pin dmChannelName properties and DM two-party read scope (RIG-3535)" (this PR)
  5. test(comms): pin roster presence states, nil-source default, visibility clip (RIG-3537) #1137

Adds an untagged table test for dmChannelName and two pgtest lifecycle cases.

The untagged test moves two already-proven properties to the cheapest tier:
order independence, and injectivity across the : separator. The injectivity
case is the confidentiality-relevant one — a hyphen delimiter would derive the
same name for the distinct pairs {a, b--c} and {a--b, c}, cross-adding members
into a same-owner private DM.

The pgtest cases cover both parties posting and reading each other's messages,
and a third same-owner agent reading nothing from a DM it is not a member of.
The third-party case is canary-ordered: a real party is proven to read the post
before the outsider's empty read is asserted, so an undelivered post cannot pass
it vacuously.

Mutation-verified, each against production code:

  • dropping the sort swap in dmChannelName fails the untagged test
  • switching the separator to -- fails it on the injectivity assertion
  • weakening the ListMessages membership join to any-member fails the
    third-party case

Co-authored-by: Matt Wilkinson matt@rigel.build

… (RIG-3535)

Adds an untagged table test for `dmChannelName` and two pgtest lifecycle cases.

The untagged test moves two already-proven properties to the cheapest tier:
order independence, and injectivity across the `:` separator. The injectivity
case is the confidentiality-relevant one — a hyphen delimiter would derive the
same name for the distinct pairs {a, b--c} and {a--b, c}, cross-adding members
into a same-owner private DM.

The pgtest cases cover both parties posting and reading each other's messages,
and a third same-owner agent reading nothing from a DM it is not a member of.
The third-party case is canary-ordered: a real party is proven to read the post
before the outsider's empty read is asserted, so an undelivered post cannot pass
it vacuously.

Mutation-verified, each against production code:
- dropping the sort swap in `dmChannelName` fails the untagged test
- switching the separator to `--` fails it on the injectivity assertion
- weakening the ListMessages membership join to any-member fails the
  third-party case

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@linear-code

linear-code Bot commented Sep 12, 2026

Copy link
Copy Markdown

RIG-3535

@github-actions

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-comms-rig3535-dm-lif.compass-eng-docs.pages.dev

Deployed from compass-comms/rig3535-dm-lifecycle at 4a29324.

@trunk-io
trunk-io Bot merged commit c66e812 into main Sep 12, 2026
15 checks passed
@trunk-io
trunk-io Bot deleted the compass-comms/rig3535-dm-lifecycle branch September 12, 2026 13:39
@trunk-io

trunk-io Bot commented Sep 12, 2026

Copy link
Copy Markdown

This pull request was merged into main as part of stacked PR 1137.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants