Skip to content

ogar-dir-sim: mail hydrates no identity; remove MailLabel - #337

Merged
AdaWorldAPI merged 5 commits into
mainfrom
ccr-0455e606-wmtsor
Oct 10, 2026
Merged

AdaWorldAPI merged 5 commits into
mainfrom
ccr-0455e606-wmtsor

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

What

Corrects #332.

mail is the licence plate. It is shown in the address book and used inside messages, and it matters, but it is a label:

  • not the identity of the mailbox or the user;
  • not an address anything is received at;
  • not provisioned.

MailLabel modelled mail as a trigger that resolved to the address holder's ExchangeIdentity. That was wrong, so it is removed along with its re-export. Nothing outside OGAR used it; lance-graph #1444 (merged) dropped its use.

Identities are GUIDs, never addresses:

  • node: the on-premises object (objectGUID).
  • exchange_guid: the provisioned mailbox.
  • ExternalDirectoryObjectId: links every mail recipient's mailbox to its user. "External" refers to the directory outside Exchange: the user is the Entra object (formerly the MsolUser), which carries {alias}@{tenant}.onmicrosoft.com, Microsoft's internal cloud address.

The routing address is not the Entra user's address. {alias}@{tenant}.mail.onmicrosoft.com (ROUTING) is the external target Exchange Online Protection (EOP) delivers to. The ExchangeIdentity, ROUTING, module and AddressRole::Mail docs now say all of this, including that the mail model holds as long as AD Connect does not use mail as the sync anchor.

Verified (Rust 1.99.0, debug 0)

  • cargo test --workspace: 1050 passed, 0 failed.
  • clippy --workspace --all-targets -D warnings: clean.
  • fmt --all --check: clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg

MailLabel (from #332) modelled mail as a trigger that resolves to the
address holder's ExchangeIdentity. It does not: mail is a label any
account may carry, it resolves to nothing, and identity is read by GUID
only — the object, then the mailbox's ExchangeGuid once provisioned, and
ExternalDirectoryObjectId across the hybrid join. ExchangeIdentity stays
(read by GUID); MailLabel and its export are removed, and the
AddressRole::Mail doc says so. No consumer used MailLabel (lance-graph
#1444 drops its use in the same step).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 4f2dcee1-f0cd-45df-888f-b80f807fa98f

📥 Commits

Reviewing files that changed from the base of the PR and between 11b00d1 and 3ccbc61.


📒 Files selected for processing (3)
  • crates/ogar-dir-sim/src/exchange.rs
  • crates/ogar-dir-sim/src/lib.rs
  • crates/ogar-dir-sim/src/violation.rs

 _____________________________________
< ICBM: Intercontinental Bug Missile. >
 -------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Comment @coderabbitai help to get the list of available commands.

…messages; not identity, receiving or provisioning)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
…sses correctly

ExternalDirectoryObjectId is the Entra identity (formerly MsolUser) every
mail recipient has, not a hybrid-join key; that identity carries
{alias}@{tenant}.onmicrosoft.com (Microsoft-internal cloud address). The
routing address {alias}@{tenant}.mail.onmicrosoft.com is the external EOP
target. ExchangeGuid identifies the provisioned mailbox.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
…a user

"External" names the directory outside Exchange: the recipient's link
from mailbox to user. The user (Entra, formerly MsolUser) carries
{alias}@{tenant}.onmicrosoft.com; the mailbox is identified by its
ExchangeGuid; the routing address is the EOP target.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 10, 2026 11:21
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@AdaWorldAPI
AdaWorldAPI merged commit 1189b43 into main Oct 10, 2026
4 checks passed
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